USP_MEMBERSHIPPROGRAMCONTRIBUTION_MEMBERSHIPREVENUETOCONSIDER_POPULATE

Parameters

Parameter Parameter Type Mode Description
@MEMBERSHIPPROGRAMID uniqueidentifier IN
@LASTRUNONDATE datetime IN
@PROCESSDATE datetime IN
@MINIMUMDATERANGE datetime IN

Definition

Copy


create procedure dbo.USP_MEMBERSHIPPROGRAMCONTRIBUTION_MEMBERSHIPREVENUETOCONSIDER_POPULATE (
    @MEMBERSHIPPROGRAMID uniqueidentifier,
    @LASTRUNONDATE datetime,
    @PROCESSDATE datetime,
    @MINIMUMDATERANGE datetime
)
as
begin
    insert into #CONTRIBUTIONPROCESS_MEMBERSHIPREVENUETOCONSIDER (FINANCIALTRANSACTIONLINEITEMID)
    select distinct MEMBERSHIPTRANSACTION.REVENUESPLITID 
    from dbo.MEMBERSHIPPROGRAM
    inner join dbo.MEMBERSHIPLEVEL on MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = @MEMBERSHIPPROGRAMID
    inner join dbo.MEMBERSHIPTRANSACTION on MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
    inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = MEMBERSHIPTRANSACTION.REVENUESPLITID
    left join dbo.MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE on 
        MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
        and MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE.MEMBERSHIPPROGRAMID = @MEMBERSHIPPROGRAMID
    where 
        FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
        and MEMBERSHIPPROGRAMCONTRIBUTIONREVENUE.FINANCIALTRANSACTIONLINEITEMID is null

    update #CONTRIBUTIONPROCESS_MEMBERSHIPREVENUETOCONSIDER 
    set 
        FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID,
        CONSTITUENTID = FINANCIALTRANSACTION.CONSTITUENTID,
        AMOUNTINCURRENCY = FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT - dbo.UFN_MEMBERSHIP_GETBASEAMOUNTDISCOUNT(MEMBERSHIPTRANSACTION.ID),
        REVENUETYPECODE = FINANCIALTRANSACTION.TYPECODE,
        EFFECTIVEDATE = FINANCIALTRANSACTION.DATE,
        APPLICATIONCODE = REVENUESPLIT_EXT.APPLICATIONCODE,
        SPLITTYPECODE = REVENUESPLIT_EXT.TYPECODE
    from #CONTRIBUTIONPROCESS_MEMBERSHIPREVENUETOCONSIDER SPLITSTOCONSIDER 
    inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = SPLITSTOCONSIDER.FINANCIALTRANSACTIONLINEITEMID 
    inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = SPLITSTOCONSIDER.FINANCIALTRANSACTIONLINEITEMID 
    inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID 
    inner join dbo.MEMBERSHIPTRANSACTION on FINANCIALTRANSACTIONLINEITEM.ID = MEMBERSHIPTRANSACTION.REVENUESPLITID

    insert into #CONTRIBUTIONPROCESS_MEMBERSHIPREVENUETOCONSIDER
    (
        FINANCIALTRANSACTIONID,
        FINANCIALTRANSACTIONLINEITEMID,
        CONSTITUENTID,
        AMOUNTINCURRENCY,
        EFFECTIVEDATE,
        REVENUETYPECODE
    )
    select
        MEMBERSHIPREVENUETOCONSIDER.FINANCIALTRANSACTIONID,
        FINANCIALTRANSACTIONLINEITEM.ID,
        MEMBERSHIPREVENUETOCONSIDER.CONSTITUENTID,
        FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT,
        MEMBERSHIPREVENUETOCONSIDER.EFFECTIVEDATE,
        0
    from #CONTRIBUTIONPROCESS_MEMBERSHIPREVENUETOCONSIDER MEMBERSHIPREVENUETOCONSIDER 
    inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = MEMBERSHIPREVENUETOCONSIDER.FINANCIALTRANSACTIONID
    inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID
    where 
        (
            MEMBERSHIPREVENUETOCONSIDER.REVENUETYPECODE = 0
            and REVENUESPLIT_EXT.TYPECODE = 0
            and REVENUESPLIT_EXT.APPLICATIONCODE = 0 
            and exists (
                select 1 
                from dbo.MEMBERSHIPCONTRIBUTIONPORTION 
                where FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
            )
        )
        or 
        (
            REVENUESPLIT_EXT.APPLICATIONCODE = 18
            and (MEMBERSHIPREVENUETOCONSIDER.EFFECTIVEDATE >= @LASTRUNONDATE or @LASTRUNONDATE is null
            and (MEMBERSHIPREVENUETOCONSIDER.EFFECTIVEDATE between @MINIMUMDATERANGE and @PROCESSDATE)
            and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
        )

    insert into #CONTRIBUTIONPROCESS_MEMBERSHIPREVENUETOCONSIDER
    (
        FINANCIALTRANSACTIONID,
        FINANCIALTRANSACTIONLINEITEMID,
        CONSTITUENTID,
        AMOUNTINCURRENCY,
        EFFECTIVEDATE,
        REVENUETYPECODE
    )
    select
        RECURRINGGIFTACTIVITY.SOURCEREVENUEID,
        RECURRINGGIFTACTIVITY.PAYMENTREVENUEID,
        MEMBERSHIPREVENUETOCONSIDER.CONSTITUENTID,
        RECURRINGGIFTACTIVITY.AMOUNT,
        FINANCIALTRANSACTION.DATE,
        0
    from #CONTRIBUTIONPROCESS_MEMBERSHIPREVENUETOCONSIDER MEMBERSHIPREVENUETOCONSIDER 
    inner join dbo.RECURRINGGIFTACTIVITY on RECURRINGGIFTACTIVITY.SOURCEREVENUEID = MEMBERSHIPREVENUETOCONSIDER.FINANCIALTRANSACTIONID
    inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = RECURRINGGIFTACTIVITY.PAYMENTREVENUEID
    inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
    where RECURRINGGIFTACTIVITY.PAYMENTREVENUEID <> MEMBERSHIPREVENUETOCONSIDER.FINANCIALTRANSACTIONLINEITEMID
        and (FINANCIALTRANSACTION.DATE >= @LASTRUNONDATE or @LASTRUNONDATE is null
        and (FINANCIALTRANSACTION.DATE between @MINIMUMDATERANGE and @PROCESSDATE)
        and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null

    insert into #CONTRIBUTIONPROCESS_MEMBERSHIPREVENUETOCONSIDER
    (
        FINANCIALTRANSACTIONID,
        FINANCIALTRANSACTIONLINEITEMID,
        CONSTITUENTID,
        AMOUNTINCURRENCY,
        EFFECTIVEDATE,
        REVENUETYPECODE
    )
    select
        INSTALLMENTPAYMENT.PLEDGEID,
        INSTALLMENTPAYMENT.PAYMENTID,
        MEMBERSHIPREVENUETOCONSIDER.CONSTITUENTID,
        INSTALLMENTPAYMENT.AMOUNT,
        FINANCIALTRANSACTION.DATE,
        0
    from #CONTRIBUTIONPROCESS_MEMBERSHIPREVENUETOCONSIDER MEMBERSHIPREVENUETOCONSIDER 
    inner join dbo.INSTALLMENTPAYMENT on INSTALLMENTPAYMENT.PLEDGEID = MEMBERSHIPREVENUETOCONSIDER.FINANCIALTRANSACTIONID
    inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = INSTALLMENTPAYMENT.PAYMENTID
    inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
    where 
        INSTALLMENTPAYMENT.PAYMENTID <> MEMBERSHIPREVENUETOCONSIDER.FINANCIALTRANSACTIONLINEITEMID
        and (FINANCIALTRANSACTION.DATE >= @LASTRUNONDATE or @LASTRUNONDATE is null)
        and (FINANCIALTRANSACTION.DATE between @MINIMUMDATERANGE and @PROCESSDATE)
        and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
end