:SetVar Procedure "ЛК::Получение списка услуг" -- flat service list selection
:r $(DropProcedureScript_AUX)
create procedure [$(Procedure)]
   @СДопускомНаличияИПУ bit = 0, -- with admission of consumption measurement device(s)
   @Статус              uniqueidentifier  = null out, -- status
   @Сообщение           $(dt_Message_AUX) = null out  -- message
AS
/*==================================================================================================
# Flat owner personal cabinet | MyFlat sample project | Author: Sergei Y.Kitáev
----------------------------------------------------------------------------------------------------
#
# OBTAINMENT OF FLAT SERVICE LIST:
#
# === Usage: ===
# exec @Возврат = [ЛК::Получение списка услуг] @Статус=@Статус out, @Сообщение=@Сообщение out
# exec @Возврат = [ЛК::Получение списка услуг] @Статус=@Статус out, @Сообщение=@Сообщение out
# exec @Возврат = [ЛК::Получение списка услуг] 1, @Статус=@Статус out, @Сообщение=@Сообщение out
#
# In case of empty result-set: @Сообщение = 'Flat service selection is empty.' (output message).
# Otherwise — @Сообщение = null (output message is null).
# Parameter @Статус (status) is set to null (by this implementation).
#
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# === Result-set: ===
# [ИД]                     uniqueidentifier     primary key -- ID
# [Номер]                  int                  not null    -- NO (order number)
# [Название]               $(dt_ShortName_AUX)  not null    -- name
# [Краткое имя]            $(dt_TinyName)       not null    -- very compact name
# [Допускает наличие ИПУ]  bit                  not null    -- is consumption measurement device
#                                                           -- admissible
# ___ Order: ___
# [Номер] -- NO (order number)
--------------------------------------------------------------------------------------------------*/
-- commstat_, commstat_, ...
--:SetVar Status_ "''"
/*================================================================================================*/
$(BEGIN_AUX)
----------------------------------------------------------------------------------------------------
select @Статус=null, @Сообщение=null
----------------------------------------------------------------------------------------------------
if @СДопускомНаличияИПУ is null
   exec [AUX:RaiseIncorrectProcedureCall] N'$(Procedure)'
----------------------------------------------------------------------------------------------------

select --top( 0 ) -- for test purpose (to simpulate “empty service list as error”)
   [ИД],                   -- ID
   [Номер],                -- NO (order number)
   [Название],             -- name
   [Краткое имя],          -- tiny name (very compact)
   [Допускает наличие ИПУ] -- is consumption measurement device admissible
from
   [Услуги потребления] (nolock)
where
   @СДопускомНаличияИПУ = 0 or
   [Допускает наличие ИПУ] = @СДопускомНаличияИПУ
order by
   [Номер]
if @@ROWCOUNT = 0
   set @Сообщение = -- warning message:
   case
      when @СДопускомНаличияИПУ = 1
      then dbo.[AUX:LocalizedText]( -- with admission of consumption measurement device(s)
         'Flat service selection is empty.',
         N'Пустая выборка услуг.' )
      else dbo.[AUX:LocalizedText]( -- without any admission (all services are requered)
         'Flat service list is empty (does not contain services).',
         N'Список услуг — пустой (не содержит ни единой услуги).' )
   end

----------------------------------------------------------------------------------------------------
$(END_AUX)
/*================================================================================================*/
GO
/*
declare @Возврат int, @Статус uniqueidentifier, @Сообщение nvarchar(max)
exec [ЛК::Получение списка услуг] @Сообщение = @Сообщение out
if @Возврат <> 0 -- If return code not equal zero:
   if @RetValue<>0 select @RetValue 'RetValue', @Status 'Status', @Message 'Message'
else if @Сообщение is not null
   select @Сообщение 'Message' -- informational message (about empty service list/selection)
*/
/*
declare @Возврат int, @Статус uniqueidentifier, @Сообщение nvarchar(max)
exec [ЛК::Получение списка услуг] 1, @Сообщение = @Сообщение out
if @Возврат <> 0 -- If return code not equal zero:
   if @RetValue<>0 select @RetValue 'RetValue', @Status 'Status', @Message 'Message'
else if @Сообщение is not null
   select @Сообщение 'Message' -- informational message (about empty service list/selection)
*/
