USP_DATAFORMTEMPLATE_EDIT_FAF_REVENUE_RECOGNITION

The save procedure used by the edit dataform template "FAF Recognition Credits Edit Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@CONSTITUENTID uniqueidentifier IN Recognition

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_FAF_REVENUE_RECOGNITION  (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @CONSTITUENTID uniqueidentifier 
)
as

    set nocount on;

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

    declare @CURRENTDATE datetime,
          @IsPaidPendingGift bit = 0,
          @RevenueSplitID uniqueidentifier = null;

    set @CURRENTDATE = getdate()

  begin try

   select @IsPaidPendingGift = 1 from dbo.FINANCIALTRANSACTION FT 
   join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FT.ID = FTLI.FINANCIALTRANSACTIONID
   join dbo.REVENUESPLIT_EXT REVSXT on FTLI.ID = REVSXT.ID 
   where FTLI.ID = @ID and FT.TYPECODE = 0 and REVSXT.APPLICATIONCODE = 17

    if @CONSTITUENTID is null
      delete from dbo.REVENUERECOGNITION where REVENUESPLITID=@ID
    else
      merge into dbo.REVENUERECOGNITION as Target
        using 
        (
            select FINANCIALTRANSACTIONLINEITEM.ID, FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT as AMOUNT, isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID) as BASECURRENCYID,  FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT as ORGANIZATIONAMOUNT, FINANCIALTRANSACTION.ORGEXCHANGERATEID as ORGANIZATIONEXCHANGERATEID
            from dbo.FINANCIALTRANSACTIONLINEITEM
            inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
            inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
            inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
            inner join dbo.PDACCOUNTSYSTEM on FINANCIALTRANSACTION.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
            inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
            where FINANCIALTRANSACTIONLINEITEM.ID=@ID
                and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
                and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1
                and FINANCIALTRANSACTION.DELETEDON is null
        ) as source on (target.REVENUESPLITID = source.ID)
        when matched then
            update set
                CONSTITUENTID = @CONSTITUENTID,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
        when not matched then
             insert (ID, REVENUESPLITID, CONSTITUENTID, AMOUNT, EFFECTIVEDATE, REVENUERECOGNITIONTYPECODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, BASECURRENCYID, ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID)
             values (newid(), @ID, @CONSTITUENTID, source.AMOUNT, @CURRENTDATE, NULL, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, source.BASECURRENCYID, source.ORGANIZATIONAMOUNT, source.ORGANIZATIONEXCHANGERATEID);

    if @IsPaidPendingGift = 1
    begin
      if @CONSTITUENTID is null
      begin
        SELECT @RevenueSplitID=FTLI.ID
        from dbo.FINANCIALTRANSACTIONLINEITEM RS
        join INSTALLMENTSPLITPAYMENT ISP on RS.ID = ISP.PAYMENTID
        join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on ISP.PLEDGEID = FTLI.FINANCIALTRANSACTIONID
        WHERE RS.ID = @ID
            and RS.DELETEDON is null
            and RS.TYPECODE <> 1
        if not @RevenueSplitID is null
          delete from dbo.REVENUERECOGNITION where REVENUESPLITID=@RevenueSplitID
      end
      else
        merge into dbo.REVENUERECOGNITION as Target
          using
          (
            SELECT FTLI.ID, FTLI.TRANSACTIONAMOUNT, isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID) as BASECURRENCYID, FTLI.ORGAMOUNT, R.ORGEXCHANGERATEID ORGANIZATIONEXCHANGERATEID
            from dbo.FINANCIALTRANSACTIONLINEITEM RS
            join dbo.FINANCIALTRANSACTION R on RS.FINANCIALTRANSACTIONID = R.ID
            join dbo.REVENUE_EXT on R.ID = REVENUE_EXT.ID
            join dbo.PDACCOUNTSYSTEM on R.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
            join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
            join INSTALLMENTSPLITPAYMENT ISP on RS.ID = ISP.PAYMENTID
            join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on ISP.PLEDGEID = FTLI.FINANCIALTRANSACTIONID
            WHERE RS.ID = @ID     
                and RS.DELETEDON is null
                and RS.TYPECODE <> 1
                and R.DELETEDON is null
          ) as source on (target.REVENUESPLITID = source.ID)
          when matched then
            update set
                  CONSTITUENTID = @CONSTITUENTID,
                  CHANGEDBYID = @CHANGEAGENTID,
                  DATECHANGED = @CURRENTDATE
          when not matched then
            insert (ID, REVENUESPLITID, CONSTITUENTID, AMOUNT, EFFECTIVEDATE, REVENUERECOGNITIONTYPECODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, BASECURRENCYID, ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID)
            values (newid(), source.ID, @CONSTITUENTID, source.TRANSACTIONAMOUNT, @CURRENTDATE, NULL, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, source.BASECURRENCYID, source.ORGAMOUNT, source.ORGANIZATIONEXCHANGERATEID);
    end

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

return 0;