UFN_GETBILLINGCYCLES

Gets all the billing cycles in the system with unique dates and names.

Return

Return Type
table

Definition

Copy


            CREATE function dbo.UFN_GETBILLINGCYCLES()
            returns table
            as return
                select    (select top 1 ACADEMICYEAR_INNER.ID
                        from dbo.ACADEMICYEAR as ACADEMICYEAR_INNER
                        where (ACADEMICYEAR_INNER.ACADEMICYEARNAMECODEID = ACADEMICYEARNAMECODE.ID) and
                            (ACADEMICYEAR_INNER.BILLINGSTARTDATE = ACADEMICYEAR.BILLINGSTARTDATE) and
                            (ACADEMICYEAR_INNER.BILLINGENDDATE = ACADEMICYEAR.BILLINGENDDATE)
                        order by ACADEMICYEAR_INNER.DATEADDED desc) as ACADEMICYEARID,
                        case when (COUNT(ACADEMICYEAR.ID) < ACADEMICYEARCOUNTS.COUNT) then
                            -- If there are less AYs with this name as there are with these dates and name then we DO need the school names

                            ACADEMICYEARNAMECODE.DESCRIPTION + ' - ' + dbo.UDA_BUILDLISTWITHDELIMITER(CONSTITUENT.KEYNAME, ', ')
                        else
                            -- If there are as many AYs with this name as there are with these dates and name then we DO NOT need the school names

                            ACADEMICYEARNAMECODE.DESCRIPTION
                        end as NAME,
                        ACADEMICYEAR.BILLINGSTARTDATE as BILLINGSTARTDATE,
                        ACADEMICYEAR.BILLINGENDDATE as BILLINGENDDATE
                from dbo.ACADEMICYEAR
                    inner join dbo.ACADEMICYEARNAMECODE
                        on ACADEMICYEARNAMECODE.ID = ACADEMICYEAR.ACADEMICYEARNAMECODEID
                    inner join dbo.CONSTITUENT
                        on CONSTITUENT.ID = ACADEMICYEAR.SCHOOLID
                    inner join (select ACADEMICYEAR_INNER.ACADEMICYEARNAMECODEID, COUNT(ACADEMICYEAR_INNER.ID) as COUNT
                                from dbo.ACADEMICYEAR as ACADEMICYEAR_INNER
                                group by ACADEMICYEAR_INNER.ACADEMICYEARNAMECODEID) as ACADEMICYEARCOUNTS
                        on ACADEMICYEARCOUNTS.ACADEMICYEARNAMECODEID = ACADEMICYEAR.ACADEMICYEARNAMECODEID
                where ((not ACADEMICYEAR.BILLINGSTARTDATE is null) and
                        (not ACADEMICYEAR.BILLINGENDDATE is null))
                group by ACADEMICYEARNAMECODE.ID,
                            ACADEMICYEARNAMECODE.DESCRIPTION,
                            ACADEMICYEAR.BILLINGSTARTDATE,
                            ACADEMICYEAR.BILLINGENDDATE,
                            ACADEMICYEARCOUNTS.COUNT