USP_DESIGNATION_VALIDATEGLMAPPINGS

Validates that GL accounts are mapped for a single designation.

Parameters

Parameter Parameter Type Mode Description
@DESIGNATIONID uniqueidentifier IN
@REVENUETRANSACTIONTYPECODE tinyint IN
@PAYMENTMETHODCODE tinyint IN
@SPLITTYPECODE tinyint IN
@APPLICATIONCODE tinyint IN
@CATEGORYCODEID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_DESIGNATION_VALIDATEGLMAPPINGS
            (
                @DESIGNATIONID uniqueidentifier, 
                @REVENUETRANSACTIONTYPECODE tinyint,
                @PAYMENTMETHODCODE tinyint,
                @SPLITTYPECODE tinyint,
                @APPLICATIONCODE tinyint,
                @CATEGORYCODEID uniqueidentifier
            )
            as
                set nocount on;

                declare @REVENUECATEGORYACCOUNT nvarchar(100);
                declare @REVENUECATEGORY nvarchar(100);
                declare @ERRORMESSAGE nvarchar(max)
                declare @DESIGNATIONNAME nvarchar(512);
                declare @MAPPINGID uniqueidentifier;
                declare @ACCOUNTTYPE nvarchar(100);

                if dbo.UFN_GLACCOUNT_EXISTS() = 0
              begin
                  -- 1. Validate that the revenue category has been mapped

                  select 
                      @REVENUECATEGORYACCOUNT = coalesce(MAP.ACCOUNTCODE, ''),
                      @REVENUECATEGORY = MAP.REVENUECATEGORYNAME
                  from 
                      dbo.GLREVENUECATEGORYMAPPING MAP 
                  where
                      ID = @CATEGORYCODEID;

                  --The revenue record does not have a category, so use the empty account code from config

                  if @REVENUECATEGORYACCOUNT is null
                      select @REVENUECATEGORY = 'default', @REVENUECATEGORYACCOUNT = coalesce((select top 1 EMPTYREVENUECATEGORYACCOUNTCODE from dbo.GLPREFERENCEINFO), '');

                  --If the revenue category account is not mapped, raise an error 

                  if coalesce(@REVENUECATEGORYACCOUNT, '') = '' and (@SPLITTYPECODE <> 1)
                  begin
                      raiserror('GL account code is not defined for the %s revenue category.', 13, 1, @REVENUECATEGORY);
                      return;
                  end

                  -- 2. Validate that the designation is mapped

                  select 
                      @DESIGNATIONNAME = DESIGNATION.NAME
                  from 
                      dbo.DESIGNATION 
                  where 
                      DESIGNATION.ID = @DESIGNATIONID
                      and ACCOUNTNUMBER = '';

                  if @DESIGNATIONNAME is not null
                  begin
                      raiserror('GL account/fund code is not defined for the %s designation.', 13, 1, @DESIGNATIONNAME);
                      return;
                  end

                  -- 3. Validate that the payment method revenue type mappings have account types defined for them

                  select top 1 
                      @MAPPINGID = MAP.ID
                  from 
                      dbo.GLPAYMENTMETHODREVENUETYPEMAPPING AS MAP 
                  where 
                      MAP.REVENUETRANSACTIONTYPECODE = @REVENUETRANSACTIONTYPECODE 
                      and MAP.PAYMENTMETHODCODE = @PAYMENTMETHODCODE 
                      and MAP.REVENUESPLITTYPECODE = @SPLITTYPECODE 
                      and MAP.APPLICATIONCODE = @APPLICATIONCODE
                      and MAP.GLACCOUNTTYPEMAPPINGID is null

                  if @MAPPINGID is not null
                  begin
                      raiserror('Payment method and revenue type of the revenue record does not map to a valid GL account type.', 13, 1);
                      return;
                  end

                  -- 4. Validate that the account type codes are mapped

                  select top 1 
                      @ACCOUNTTYPE = GLACCOUNTTYPEMAPPING.ACCOUNTTYPE
                  from 
                      dbo.GLPAYMENTMETHODREVENUETYPEMAPPING AS MAP 
                  left join 
                      dbo.GLACCOUNTTYPEMAPPING on MAP.GLACCOUNTTYPEMAPPINGID = GLACCOUNTTYPEMAPPING.ID
                  where 
                      MAP.REVENUETRANSACTIONTYPECODE = @REVENUETRANSACTIONTYPECODE 
                      and MAP.PAYMENTMETHODCODE = @PAYMENTMETHODCODE 
                      and MAP.REVENUESPLITTYPECODE = @SPLITTYPECODE 
                      and MAP.APPLICATIONCODE = @APPLICATIONCODE
                      and coalesce(GLACCOUNTTYPEMAPPING.GLCODE, '') = ''

                  if @ACCOUNTTYPE is not null
                  begin
                      raiserror('GL account code is not defined for the %s account type.', 13, 1, @ACCOUNTTYPE);
                      return;
                  end
        end

                return 0;