USP_DESIGNATIONLEVEL_GETTOTALRECEIVEDBYPOSITIONINCURRENCY

Returns the total amount received for a given designation level in a given currency.

Parameters

Parameter Parameter Type Mode Description
@VALUE money INOUT
@DESIGNATIONLEVELID uniqueidentifier IN
@ORGPOSITIONSSELECTIONID uniqueidentifier IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@CURRENCYID uniqueidentifier IN

Definition

Copy


            create procedure dbo.USP_DESIGNATIONLEVEL_GETTOTALRECEIVEDBYPOSITIONINCURRENCY
            (
                @VALUE money = null output,
                @DESIGNATIONLEVELID uniqueidentifier,
                @ORGPOSITIONSSELECTIONID uniqueidentifier,
                @STARTDATE datetime = null,
                @ENDDATE datetime = null,
                @CURRENCYID uniqueidentifier = null
            ) 
            as begin
                if @ORGPOSITIONSSELECTIONID is null
                begin
                    set @VALUE = dbo.UFN_DESIGNATIONLEVEL_GETTOTALRECEIVEDINCURRENCY(@DESIGNATIONLEVELID,@STARTDATE,@ENDDATE,@CURRENCYID);
                    return;
                end

                declare @IDS as table(ID uniqueidentifier);
                insert into @IDS exec USP_ORGANIZATIONHIERARCHY_IDSET_POSITIONHOLDERS @ORGPOSITIONSSELECTIONID, null;

                select @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE),
                        @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);

                with DESIGNATIONS_CTE as (
                    select ID 
                    from dbo.DESIGNATION D
                    where D.DESIGNATIONLEVEL1ID = @DESIGNATIONLEVELID or
                          D.DESIGNATIONLEVEL2ID = @DESIGNATIONLEVELID or 
                          D.DESIGNATIONLEVEL3ID = @DESIGNATIONLEVELID or
                          D.DESIGNATIONLEVEL4ID = @DESIGNATIONLEVELID or
                          D.DESIGNATIONLEVEL5ID = @DESIGNATIONLEVELID
                    )

                select @VALUE =
                    coalesce(dbo.UFN_REVENUESOLICITOR_GETAMOUNTINCURRENCY(RSOL.ID,@CURRENCYID), 0)
                    from dbo.REVENUESPLIT RDS
                    inner join DESIGNATIONS_CTE D on RDS.DESIGNATIONID = D.ID
                    inner join dbo.REVENUE R on R.ID = RDS.REVENUEID
                    inner join dbo.REVENUESOLICITOR RSOL on RDS.ID = RSOL.REVENUESPLITID
                    inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH 
                        on OPH.CONSTITUENTID = RSOL.CONSTITUENTID and R.DATE between OPH.DATEFROM and coalesce(OPH.DATETO, R.DATE)
                    inner join @IDS as SELECTION on OPH.[ID] = SELECTION.[ID]
                    where
                        (R.DATE >= @STARTDATE or @STARTDATE is null) and 
                        (R.DATE <= @ENDDATE or @ENDDATE is null) and
                        R.TRANSACTIONTYPECODE = 0;

            end