USP_DATAFORMTEMPLATE_EDITLOAD_POSTEDGRANTAWARD_3

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@DATALOADED bit INOUT
@TSLONG bigint INOUT
@GRANTNAME nvarchar(150) INOUT
@GRANTORNAME nvarchar(154) INOUT
@DATE datetime INOUT
@AMOUNT money INOUT
@POSTSTATUSCODE tinyint INOUT
@POSTDATE datetime INOUT
@SPLITS xml INOUT
@FREQUENCYCODE tinyint INOUT
@NUMBEROFINSTALLMENTS int INOUT
@NEXTTRANSACTIONDATE datetime INOUT
@AMOUNTPAID money INOUT
@INSTALLMENTS xml INOUT
@DONOTACKNOWLEDGE bit INOUT
@MAINSINGLEDESIGNATIONID uniqueidentifier INOUT
@LASTPAYMENTSEQUENCE int INOUT
@CATEGORYCODEID uniqueidentifier INOUT
@MAXSOLICITORSPLITAMOUNTS xml INOUT
@ADJUSTMENTDATE datetime INOUT
@ADJUSTMENTPOSTDATE datetime INOUT
@ADJUSTMENTPOSTSTATUSCODE tinyint INOUT
@ADJUSTMENTREASON nvarchar(300) INOUT
@ISREIMBURSABLE bit INOUT
@GRANTAWARDON tinyint INOUT
@OPPORTUNITYID uniqueidentifier INOUT
@PROSPECTNAME nvarchar(154) INOUT
@CONSTITUENTID uniqueidentifier INOUT
@BASECURRENCYID uniqueidentifier INOUT
@TRANSACTIONCURRENCYID uniqueidentifier INOUT
@BASEEXCHANGERATEID uniqueidentifier INOUT
@EXCHANGERATE decimal(20, 8) INOUT
@HADSPOTRATE bit INOUT
@RATECHANGED bit INOUT
@BASEDECIMALDIGITS tinyint INOUT
@BASEROUNDINGTYPECODE tinyint INOUT
@TRANSACTIONCURRENCYDESCRIPTION nvarchar(110) INOUT
@ADJUSTMENTREASONCODEID uniqueidentifier INOUT
@HASPOSTEDPAYMENTS bit INOUT
@HASPOSTEDWRITEOFFS bit INOUT
@HASPAYMENTS bit INOUT
@USERGRANTEDSPOTRATE bit INOUT
@ADJPAYMENT_DATE datetime INOUT
@ADJPAYMENT_POSTDATE datetime INOUT
@ADJPAYMENT_REASONCODEID uniqueidentifier INOUT
@ADJPAYMENT_DETAILS nvarchar(255) INOUT
@HASRECOGNITIONCREDIT bit INOUT
@UPDATERECOGNITIONOPTION tinyint INOUT

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_POSTEDGRANTAWARD_3 (
  @ID uniqueidentifier
  ,@DATALOADED bit = 0 output
  ,@TSLONG bigint = 0 output
  ,@GRANTNAME nvarchar(150) = null output
  ,@GRANTORNAME nvarchar(154) = null output
  ,@DATE datetime = null output
  ,@AMOUNT money = null output
  ,@POSTSTATUSCODE tinyint = null output
  ,@POSTDATE datetime = null output
  ,@SPLITS xml = null output
  ,@FREQUENCYCODE tinyint = null output
  ,@NUMBEROFINSTALLMENTS int = null output
  ,@NEXTTRANSACTIONDATE datetime = null output
  ,@AMOUNTPAID money = null output
  ,@INSTALLMENTS xml = null output
  ,@DONOTACKNOWLEDGE bit = null output
  ,@MAINSINGLEDESIGNATIONID uniqueidentifier = null output
  ,@LASTPAYMENTSEQUENCE int = null output
  ,@CATEGORYCODEID uniqueidentifier = null output
  ,@MAXSOLICITORSPLITAMOUNTS xml = null output
  ,@ADJUSTMENTDATE datetime = null output
  ,@ADJUSTMENTPOSTDATE datetime = null output
  ,@ADJUSTMENTPOSTSTATUSCODE tinyint = null output
  ,@ADJUSTMENTREASON nvarchar(300) = null output
  ,@ISREIMBURSABLE bit = null output
  ,@GRANTAWARDON tinyint = null output
  ,@OPPORTUNITYID uniqueidentifier = null output
  ,@PROSPECTNAME nvarchar(154) = null output
  ,@CONSTITUENTID uniqueidentifier = null output
  ,@BASECURRENCYID uniqueidentifier = null output
  ,@TRANSACTIONCURRENCYID uniqueidentifier = null output
  ,@BASEEXCHANGERATEID uniqueidentifier = null output
  ,@EXCHANGERATE decimal(20, 8) = null output
  ,@HADSPOTRATE bit = null output
  ,@RATECHANGED bit = null output
  ,@BASEDECIMALDIGITS tinyint = null output
  ,@BASEROUNDINGTYPECODE tinyint = null output
  ,@TRANSACTIONCURRENCYDESCRIPTION nvarchar(110) = null output
  ,@ADJUSTMENTREASONCODEID uniqueidentifier = null output
  ,@HASPOSTEDPAYMENTS bit = null output
  ,@HASPOSTEDWRITEOFFS bit = null output
  ,@HASPAYMENTS bit = null output
  ,@USERGRANTEDSPOTRATE bit = null output
  ,@ADJPAYMENT_DATE datetime = null output
  ,@ADJPAYMENT_POSTDATE datetime = null output
  ,@ADJPAYMENT_REASONCODEID uniqueidentifier = null output
  ,@ADJPAYMENT_DETAILS nvarchar(255) = null output
  ,@HASRECOGNITIONCREDIT bit = null output
  ,@UPDATERECOGNITIONOPTION tinyint = null output
  )
as
set nocount on;
set @DATALOADED = 0
set @TSLONG = 0

declare @LASTINSTALLMENT uniqueidentifier;

select @ADJUSTMENTDATE = getdate()
  ,@ADJUSTMENTPOSTDATE = getdate()
  ,@ADJUSTMENTPOSTSTATUSCODE = 0

select @DATALOADED = DATALOADED
  ,@GRANTNAME = GRANTNAME
  ,@GRANTORNAME = GRANTORNAME
  ,@DATE = [DATE]
  ,@AMOUNT = AMOUNT
  ,@POSTSTATUSCODE = POSTSTATUSCODE
  ,@POSTDATE = POSTDATE
  ,@FREQUENCYCODE = FREQUENCYCODE
  ,@NUMBEROFINSTALLMENTS = NUMBEROFINSTALLMENTS
  ,@NEXTTRANSACTIONDATE = NEXTTRANSACTIONDATE
  ,@TSLONG = TSLONG
  ,@DONOTACKNOWLEDGE = DONOTACKNOWLEDGE
  ,@CATEGORYCODEID = CATEGORYCODEID
  ,@MAXSOLICITORSPLITAMOUNTS = MAXSOLICITORSPLITAMOUNTS
  ,@ISREIMBURSABLE = ISREIMBURSABLE
  ,@GRANTAWARDON = GRANTAWARDON
  ,@OPPORTUNITYID = OPPORTUNITYID
  ,@PROSPECTNAME = PROSPECTNAME
  ,@CONSTITUENTID = CONSTITUENTID
  ,@BASECURRENCYID = BASECURRENCYID
  ,@TRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID
  ,@BASEEXCHANGERATEID = BASEEXCHANGERATEID
  ,@EXCHANGERATE = EXCHANGERATE
  ,@HADSPOTRATE = HADSPOTRATE
  ,@RATECHANGED = 0
  ,@BASEDECIMALDIGITS = BASEDECIMALDIGITS
  ,@BASEROUNDINGTYPECODE = BASEROUNDINGTYPECODE
  ,@TRANSACTIONCURRENCYDESCRIPTION = TRANSACTIONCURRENCYDESCRIPTION
from (
  select 1 as DATALOADED
    ,GRANTS.TITLE as GRANTNAME
    ,dbo.UFN_CONSTITUENT_BUILDNAME(GRANTS.GRANTORID) as GRANTORNAME
    ,REVENUE.[DATE] as [DATE]
    ,REVENUE.TRANSACTIONAMOUNT as AMOUNT
    ,0 as POSTSTATUSCODE
    ,REVENUE.POSTDATE as POSTDATE
    ,REVENUESCHEDULE.FREQUENCYCODE as FREQUENCYCODE
    ,REVENUESCHEDULE.NUMBEROFINSTALLMENTS as NUMBEROFINSTALLMENTS
    ,coalesce(REVENUESCHEDULE.NEXTTRANSACTIONDATE, REVENUESCHEDULE.STARTDATE) as NEXTTRANSACTIONDATE
    ,REVENUE.TSLONG as TSLONG
    ,DONOTACKNOWLEDGE
    ,(
      select top 1 GLREVENUECATEGORYMAPPINGID
      from dbo.REVENUECATEGORY
      inner join dbo.REVENUESPLIT on REVENUECATEGORY.ID = REVENUESPLIT.ID
      where REVENUEID = REVENUE.ID
      ) as CATEGORYCODEID
    ,dbo.UFN_REVENUEDETAIL_GETMAXSOLICITORSPLITAMOUNTS_TOITEMLISTXML(@ID) as MAXSOLICITORSPLITAMOUNTS
    ,ISREIMBURSABLE as ISREIMBURSABLE
    ,1 as GRANTAWARDON
    ,-- Grant program

    null as OPPORTUNITYID
    ,null as PROSPECTNAME
    ,GRANTS.GRANTORID as CONSTITUENTID
    ,REVENUE.BASECURRENCYID
    ,REVENUE.TRANSACTIONCURRENCYID
    ,REVENUE.BASEEXCHANGERATEID
    ,CURRENCYEXCHANGERATE.RATE as EXCHANGERATE
    ,case 
      when CURRENCYEXCHANGERATE.TYPECODE = 2
        then 1
      else 0
      end as HADSPOTRATE
    ,CURRENCY.DECIMALDIGITS as BASEDECIMALDIGITS
    ,CURRENCY.ROUNDINGTYPECODE as BASEROUNDINGTYPECODE
    ,dbo.UFN_CURRENCY_GETDESCRIPTION(REVENUE.TRANSACTIONCURRENCYID) as TRANSACTIONCURRENCYDESCRIPTION
  from dbo.REVENUE
  left join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
  inner join dbo.REVENUESCHEDULE on REVENUE.ID = REVENUESCHEDULE.ID
  inner join dbo.REVENUEFUNDINGREQUEST on REVENUE.ID = REVENUEFUNDINGREQUEST.ID
  inner join dbo.FUNDINGREQUEST on REVENUEFUNDINGREQUEST.FUNDINGREQUESTID = FUNDINGREQUEST.ID
  inner join dbo.GRANTS on FUNDINGREQUEST.GRANTSID = GRANTS.ID
  inner join dbo.CURRENCY on CURRENCY.ID = REVENUE.BASECURRENCYID
  left join dbo.CURRENCYEXCHANGERATE on CURRENCYEXCHANGERATE.ID = REVENUE.BASEEXCHANGERATEID
  where REVENUE.ID = @ID
    and REVENUE.TRANSACTIONTYPECODE = 6

  union all

  select 1 as DATALOADED
    ,null as GRANTNAME
    ,null as GRANTORNAME
    ,REVENUE.[DATE] as [DATE]
    ,REVENUE.TRANSACTIONAMOUNT as AMOUNT
    ,0 as POSTSTATUSCODE
    ,REVENUE.POSTDATE as POSTDATE
    ,REVENUESCHEDULE.FREQUENCYCODE as FREQUENCYCODE
    ,REVENUESCHEDULE.NUMBEROFINSTALLMENTS as NUMBEROFINSTALLMENTS
    ,coalesce(REVENUESCHEDULE.NEXTTRANSACTIONDATE, REVENUESCHEDULE.STARTDATE) as NEXTTRANSACTIONDATE
    ,REVENUE.TSLONG as TSLONG
    ,DONOTACKNOWLEDGE
    ,(
      select top 1 GLREVENUECATEGORYMAPPINGID
      from dbo.REVENUECATEGORY
      inner join dbo.REVENUESPLIT on REVENUECATEGORY.ID = REVENUESPLIT.ID
      where REVENUEID = REVENUE.ID
      ) as CATEGORYCODEID
    ,dbo.UFN_REVENUEDETAIL_GETMAXSOLICITORSPLITAMOUNTS_TOITEMLISTXML(@ID) as MAXSOLICITORSPLITAMOUNTS
    ,ISREIMBURSABLE as ISREIMBURSABLE
    ,2 as GRANTAWARDON
    ,-- Opportunity

    OPPORTUNITY.ID as OPPORTUNITYID
    ,dbo.UFN_CONSTITUENT_BUILDNAME(PROSPECTPLAN.PROSPECTID) as PROSPECTNAME
    ,PROSPECTPLAN.PROSPECTID as CONSTITUENTID
    ,REVENUE.BASECURRENCYID
    ,REVENUE.TRANSACTIONCURRENCYID
    ,REVENUE.BASEEXCHANGERATEID
    ,CURRENCYEXCHANGERATE.RATE as EXCHANGERATE
    ,case 
      when CURRENCYEXCHANGERATE.TYPECODE = 2
        then 1
      else 0
      end as HADSPOTRATE
    ,CURRENCY.DECIMALDIGITS as BASEDECIMALDIGITS
    ,CURRENCY.ROUNDINGTYPECODE as BASEROUNDINGTYPECODE
    ,dbo.UFN_CURRENCY_GETDESCRIPTION(REVENUE.TRANSACTIONCURRENCYID) as TRANSACTIONCURRENCYDESCRIPTION
  from dbo.REVENUE
  left join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
  inner join dbo.REVENUESCHEDULE on REVENUE.ID = REVENUESCHEDULE.ID
  inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
  inner join dbo.REVENUEOPPORTUNITY on REVENUEOPPORTUNITY.ID = REVENUESPLIT.ID
  inner join dbo.OPPORTUNITY on REVENUEOPPORTUNITY.OPPORTUNITYID = OPPORTUNITY.ID
  inner join dbo.PROSPECTPLAN on OPPORTUNITY.PROSPECTPLANID = PROSPECTPLAN.ID
  inner join dbo.CURRENCY on CURRENCY.ID = REVENUE.BASECURRENCYID
  left join dbo.CURRENCYEXCHANGERATE on CURRENCYEXCHANGERATE.ID = REVENUE.BASEEXCHANGERATEID
  where REVENUE.ID = @ID
    and REVENUE.TRANSACTIONTYPECODE = 6
  ) as TEMPTABLE;

if @DATALOADED = 1
begin
  select @ADJUSTMENTDATE = [DATE]
    ,@ADJUSTMENTPOSTDATE = POSTDATE
   ,@ADJUSTMENTPOSTSTATUSCODE = 1
    ,@ADJUSTMENTREASON = REASON
    ,@ADJUSTMENTREASONCODEID = REASONCODEID
  from dbo.ADJUSTMENT
  where REVENUEID = @ID
    and POSTSTATUSCODE = 1;

  select top 1 @ADJPAYMENT_DATE = ADJ.[DATE]
    ,@ADJPAYMENT_POSTDATE = ADJ.POSTDATE
    ,@ADJPAYMENT_DETAILS = ADJ.REASON
    ,@ADJPAYMENT_REASONCODEID = ADJ.REASONCODEID
  from (
    select A.[DATE]
      ,A.POSTDATE
      ,A.REASON
      ,A.REASONCODEID
    from dbo.ADJUSTMENT A
    inner join dbo.FINANCIALTRANSACTIONLINEITEM FTL on A.ID = FTL.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID
    inner join dbo.INSTALLMENTPAYMENT I on FTL.ID = I.PAYMENTID
    where I.PLEDGEID = @ID
      and A.POSTSTATUSCODE = 1
      and FTL.DELETEDON is null

    union all

    select A.[DATE]
      ,A.POSTDATE
      ,A.REASON
      ,A.REASONCODEID
    from dbo.WRITEOFFADJUSTMENT A
    inner join dbo.FINANCIALTRANSACTIONLINEITEM FTL on A.ID = FTL.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID
    inner join dbo.FINANCIALTRANSACTION FT on FTL.FINANCIALTRANSACTIONID = FT.ID
    where FT.PARENTID = @ID
      and A.POSTSTATUSCODE = 1
      and FTL.DELETEDON is null
    ) ADJ
  order by ADJ.[DATE] desc

  set @AMOUNTPAID = @AMOUNT - dbo.UFN_PLEDGE_GETBALANCE(@ID);
  set @LASTINSTALLMENT = dbo.UFN_INSTALLMENT_GETLASTINSTALLMENTPAID(@ID);

  if @LASTINSTALLMENT is null
  begin
    set @LASTPAYMENTSEQUENCE = 0;
  end
  else
  begin
    set @LASTPAYMENTSEQUENCE = (
        select SEQUENCE
        from dbo.INSTALLMENT
        where ID = @LASTINSTALLMENT
        );
  end

  -- set @NUMBEROFINSTALLMENTS to the number of unpaid installments

  select @LASTPAYMENTSEQUENCE = COALESCE(MAX(INSTALLMENT.SEQUENCE), 0)
  ,@NUMBEROFINSTALLMENTS = COUNT(INSTALLMENT.ID)
  from dbo.UFN_INSTALLMENT_GETINSTALLMENTS_2(@ID) INSTALLMENT
  where INSTALLMENT.BALANCE > 0;

  set @SPLITS = (
      select SPLITS.TRANSACTIONAMOUNT AMOUNT
        ,SPLITS.APPLICATIONCODE
        ,SPLITS.CATEGORYCODEID
        ,SPLITS.DESIGNATIONID
        ,SPLITS.ID
        ,SPLITS.TYPECODE
        ,SPLITS.TRANSACTIONCURRENCYID
      from dbo.UFN_REVENUE_GETSPLITS_2(@ID) SPLITS
      inner join dbo.DESIGNATION on DESIGNATION.ID = SPLITS.DESIGNATIONID
      order by DESIGNATION.VANITYNAME
      for xml raw('ITEM')
        ,type
        ,elements
        ,root('SPLITS')
        ,binary BASE64
      );
  set @INSTALLMENTS = (
      select I.ID
        ,I.[DATE]
        ,I.TRANSACTIONAMOUNT AMOUNT
        ,(I.TRANSACTIONAMOUNT - (I.AMOUNTPAID + I.AMOUNTWRITTENOFF)) as BALANCE
        ,(I.AMOUNTPAID + I.AMOUNTWRITTENOFF) as APPLIED
        ,I.SEQUENCE
        ,I.PAYMENTCOUNT
        ,I.WRITEOFFCOUNT
        ,(
          select SPLITINFO.ID
            ,SPLITINFO.DESIGNATIONID
            ,SPLITINFO.TRANSACTIONAMOUNT AMOUNT
            ,(SPLITINFO.AMOUNTPAID + SPLITINFO.AMOUNTWRITTENOFF) APPLIED
            ,SPLITINFO.TRANSACTIONCURRENCYID
            ,SPLITINFO.REVENUESPLITID
            ,SPLITINFO.PAYMENTCOUNT
            ,SPLITINFO.WRITEOFFCOUNT
          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
      );
end

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);
--replace with commented code for PBI 102747

set @USERGRANTEDSPOTRATE = 1;

if exists (
    select 1
    from dbo.REVENUERECOGNITION
    inner join dbo.FINANCIALTRANSACTIONLINEITEM on REVENUERECOGNITION.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID
    where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID
    )
    set @HASRECOGNITIONCREDIT = 1
else
    set @HASRECOGNITIONCREDIT = 0

set @UPDATERECOGNITIONOPTION = 0

/*set @USERGRANTEDSPOTRATE = case 
                                when dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or 
                                    dbo.UFN_SECURITY_APPUSER_GRANTED_SYSTEMPRIVILEGE_IN_SYSTEMROLE(@CURRENTAPPUSERID, '911f104d-ba5f-4469-b0ae-184c879aea99') = 1 
                                        then 1
                                        else 0
                                end;*/
return 0;