UFN_RECEIVABLECREDITAPPLICATIONS

Gets a list of all the receivable credit applications for a given credit

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@RECEIVABLECREDITLINEITEMID uniqueidentifier IN
@INCLUDEPOSSIBLEAPPLICATIONS bit IN

Definition

Copy


            create function dbo.UFN_RECEIVABLECREDITAPPLICATIONS
                (
                    @RECEIVABLECREDITLINEITEMID uniqueidentifier,
                    @INCLUDEPOSSIBLEAPPLICATIONS bit = 1
                )
            returns @APPLICATIONS table
                (
                    ID uniqueidentifier,
                    SOURCELINEITEMID uniqueidentifier NOT NULL,
                    APPLIEDTOLINEITEMID uniqueidentifier NOT NULL,
                    APPLIEDTOID uniqueidentifier NOT NULL,
                    APPLIEDTOLINEITEMDESCRIPTION nvarchar(100),
                    CHARGEDUEDATE datetime,
                    APPLICATIONDATE datetime,
                    DATE datetime NOT NULL,
                    NAME nvarchar(100) NOT NULL,
                    BILLINGITEMNAME nvarchar(100) NOT NULL,
                    TOTALAMOUNT money NOT NULL,
                    AMOUNTREMAINING money NOT NULL,
                    AMOUNT money NOT NULL
                )
            with execute as caller
            as 
            begin

                -- Generate a table with all the existing applications

                insert into @APPLICATIONS
                    (ID,
                    SOURCELINEITEMID,
                    APPLIEDTOLINEITEMID,
                    APPLIEDTOID,
                    APPLIEDTOLINEITEMDESCRIPTION,
                    CHARGEDUEDATE,
                    APPLICATIONDATE,
                    DATE,
                    NAME,
                    BILLINGITEMNAME,
                    TOTALAMOUNT,
                    AMOUNTREMAINING,
                    AMOUNT)
                select FINANCIALTRANSACTIONLINEITEMAPPLICATION.ID,
                        FINANCIALTRANSACTIONLINEITEMAPPLICATION.SOURCELINEITEMID,
                        FINANCIALTRANSACTIONLINEITEMAPPLICATION.APPLIEDTOLINEITEMID,
                        FINANCIALTRANSACTION_CHARGE.ID,
                        FINANCIALTRANSACTIONLINEITEM_CHARGE.DESCRIPTION,
                        CHARGE.DUEDATE,
                        FINANCIALTRANSACTIONLINEITEM_APPLICATION.DATEADDED,
                        FINANCIALTRANSACTION_CHARGE.DATE,
                        CONSTITUENT_CHARGEOWNER.NAME,
                        BILLINGITEM.NAME,
                        FINANCIALTRANSACTIONLINEITEM_CHARGE.AMOUNT,
                        FINANCIALTRANSACTIONLINEITEM_CHARGE.AMOUNT,
                        FINANCIALTRANSACTIONLINEITEM_APPLICATION.AMOUNT
                from dbo.FINANCIALTRANSACTIONLINEITEM as FINANCIALTRANSACTIONLINEITEM_RECEIVABLECREDIT
                    inner join dbo.FINANCIALTRANSACTION as FINANCIALTRANSACTION_RECEIVABLECREDIT
                        on FINANCIALTRANSACTION_RECEIVABLECREDIT.ID = FINANCIALTRANSACTIONLINEITEM_RECEIVABLECREDIT.FINANCIALTRANSACTIONID
                    inner join dbo.FINANCIALTRANSACTIONLINEITEMAPPLICATION
                        on FINANCIALTRANSACTIONLINEITEM_RECEIVABLECREDIT.ID = FINANCIALTRANSACTIONLINEITEMAPPLICATION.SOURCELINEITEMID
                    inner join FINANCIALTRANSACTIONLINEITEM as FINANCIALTRANSACTIONLINEITEM_APPLICATION
                        on FINANCIALTRANSACTIONLINEITEMAPPLICATION.ID = FINANCIALTRANSACTIONLINEITEM_APPLICATION.ID
                    inner join dbo.FINANCIALTRANSACTIONLINEITEM as FINANCIALTRANSACTIONLINEITEM_CHARGE
                        on FINANCIALTRANSACTIONLINEITEM_CHARGE.ID = FINANCIALTRANSACTIONLINEITEMAPPLICATION.APPLIEDTOLINEITEMID
                    inner join dbo.FINANCIALTRANSACTION as FINANCIALTRANSACTION_CHARGE
                        on FINANCIALTRANSACTIONLINEITEM_CHARGE.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION_CHARGE.ID
                    inner join dbo.CHARGE
                        on CHARGE.ID =FINANCIALTRANSACTION_CHARGE.ID
                    inner join dbo.CONSTITUENT as CONSTITUENT_CHARGEOWNER
                        on FINANCIALTRANSACTION_CHARGE.CONSTITUENTID = CONSTITUENT_CHARGEOWNER.ID
                    inner join dbo.CHARGELINEITEM
                        on CHARGELINEITEM.ID = FINANCIALTRANSACTIONLINEITEM_CHARGE.ID
                    inner join dbo.BILLINGITEM
                        on BILLINGITEM.ID = CHARGELINEITEM.BILLINGITEMID
                where (FINANCIALTRANSACTIONLINEITEM_RECEIVABLECREDIT.ID = @RECEIVABLECREDITLINEITEMID) and
                        (FINANCIALTRANSACTIONLINEITEM_APPLICATION.DELETED = 0);

                -- Are we including possible applications

                if (@INCLUDEPOSSIBLEAPPLICATIONS = 1)
                begin
                    -- Get the credit owner

                    declare @RECEIVABLECREDITOWNER uniqueidentifier;
                    select @RECEIVABLECREDITOWNER = FINANCIALTRANSACTION.CONSTITUENTID
                    from dbo.FINANCIALTRANSACTION
                        inner join dbo.FINANCIALTRANSACTIONLINEITEM
                            on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
                    where FINANCIALTRANSACTIONLINEITEM.ID = @RECEIVABLECREDITLINEITEMID;

                    -- Find all the possible charge line items for this credit that do not already have applications

                    --  and that this credit owner is responsible for.

                    insert into @APPLICATIONS
                        (ID,
                        SOURCELINEITEMID,
                        APPLIEDTOLINEITEMID,
                        APPLIEDTOID,
                        APPLIEDTOLINEITEMDESCRIPTION,
                        CHARGEDUEDATE,
                        DATE,
                        NAME,
                        BILLINGITEMNAME,
                        TOTALAMOUNT,
                        AMOUNTREMAINING,
                        AMOUNT)
                    select null,
                            @RECEIVABLECREDITLINEITEMID,
                            FINANCIALTRANSACTIONLINEITEM_CHARGE.ID,
                            FINANCIALTRANSACTION_CHARGE.ID,
                            FINANCIALTRANSACTIONLINEITEM_CHARGE.DESCRIPTION,
                            CHARGE.DUEDATE,
                            FINANCIALTRANSACTION_CHARGE.DATE,
                            CONSTITUENT_CHARGEOWNER.NAME,
                            BILLINGITEM.NAME,
                            FINANCIALTRANSACTIONLINEITEM_CHARGE.AMOUNT,
                            FINANCIALTRANSACTIONLINEITEM_CHARGE.AMOUNT,
                            0
                    from dbo.CHARGE
                        inner join dbo.FINANCIALTRANSACTION as FINANCIALTRANSACTION_CHARGE
                            on CHARGE.ID = FINANCIALTRANSACTION_CHARGE.ID
                        inner join dbo.CONSTITUENT as CONSTITUENT_CHARGEOWNER
                            on FINANCIALTRANSACTION_CHARGE.CONSTITUENTID = CONSTITUENT_CHARGEOWNER.ID
                        inner join dbo.FINANCIALTRANSACTIONLINEITEM as FINANCIALTRANSACTIONLINEITEM_CHARGE
                            on FINANCIALTRANSACTION_CHARGE.ID = FINANCIALTRANSACTIONLINEITEM_CHARGE.FINANCIALTRANSACTIONID
                        inner join dbo.CHARGELINEITEM
                            on CHARGELINEITEM.ID = FINANCIALTRANSACTIONLINEITEM_CHARGE.ID
                        inner join dbo.BILLINGITEM
                            on BILLINGITEM.ID = CHARGELINEITEM.BILLINGITEMID
                        inner join dbo.V_QUERY_CHARGELINEITEMRESPONSIBILITY
                            on (V_QUERY_CHARGELINEITEMRESPONSIBILITY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM_CHARGE.ID) and
                                (V_QUERY_CHARGELINEITEMRESPONSIBILITY.CONSTITUENTID = @RECEIVABLECREDITOWNER)
                        left outer join @APPLICATIONS as APPLICATIONS
                            on APPLICATIONS.APPLIEDTOLINEITEMID = FINANCIALTRANSACTIONLINEITEM_CHARGE.ID
 where (APPLICATIONS.ID is null);
                end

                -- Now subtract the already made payments and credits

                update @APPLICATIONS
                    set AMOUNTREMAINING = AMOUNTREMAINING - FINANCIALTRANSACTIONLINEITEM_APPLICATION.AMOUNT
                from @APPLICATIONS as APPLICATIONS
                    inner join dbo.FINANCIALTRANSACTIONLINEITEMAPPLICATION
                        on FINANCIALTRANSACTIONLINEITEMAPPLICATION.APPLIEDTOLINEITEMID = APPLICATIONS.APPLIEDTOLINEITEMID
                    inner join dbo.FINANCIALTRANSACTIONLINEITEM as FINANCIALTRANSACTIONLINEITEM_APPLICATION
                        on FINANCIALTRANSACTIONLINEITEM_APPLICATION.ID = FINANCIALTRANSACTIONLINEITEMAPPLICATION.ID
                where (FINANCIALTRANSACTIONLINEITEM_APPLICATION.DELETED = 0);

                return;
            end