exec [AUX:DropProcedures] N'ЛК:%'
GO
exec [AUX:DropProcedures] N'ЛК::%'
GO
exec [AUX:DropProcedures] N'ЛК:%', N'ЛК::%'
GO
exec [AUX:DropProcedures] N'ЛК:%', N'ЛК::%'
GO
--:SetVar Procedure "ЛК:ИнформацияЛС" -- account info
if exists( select * from [sysobjects] (nolock) where [type]='P' and [name]=N'ЛК:ИнформацияЛС' )
   drop procedure [ЛК:ИнформацияЛС]
GO
/* Translated by $SQLTRANS utility (SQL-file technology). Method author: Sergei Y.Kitáev.
** Script translation date-time: 2022-11-27 00:37:48.28 (stamp of SQL-file generation). */
create procedure [ЛК:ИнформацияЛС] @ИДЛС uniqueidentifier
AS
/*==================================================================================================
# Flat owner personal cabinet | MyFlat sample project | Author: Sergei Y.Kitáev
----------------------------------------------------------------------------------------------------
#
# ACCOUNT INFO:
#
# === Usage: ===
# exec [ЛК:ИнформацияЛС] <ИД ЛС> -- account ID
#
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# === Result-set: ===
# [ФИО]                   $(dt_String_RUH)  not null -- flat owner initials
# [Адрес]                 $(dt_String_RUH)  not null -- flat owner address
# [Кол-во проживающих]    int               not null -- really live (person count)
# [Общая площадь]         $(dt_Square_2)    not null -- total flat square
# [Жилая площадь]         $(dt_Square_2)    not null -- living flat territory square
# [Название района]       $(dt_String_RUH)  not null -- district name
# [Название жил.орг.]     $(dt_String_RUH)  not null -- name of technical subdivision
==================================================================================================*/
begin begin try set xact_abort off; set ansi_nulls,ansi_null_dflt_on,quoted_identifier,arithabort,nocount on; set implicit_transactions off; declare @initial_tran_count_aux int, @is_local_tran_open_aux bit; select @initial_tran_count_aux=@@trancount, @is_local_tran_open_aux=0; end try begin catch throw; end catch; begin try
----------------------------------------------------------------------------------------------------
if @ИДЛС is null
   exec [AUX:RaiseIncorrectProcedureCall] N'ЛК:ИнформацияЛС'
----------------------------------------------------------------------------------------------------
set NOCOUNT off

select
   RTRIM( лс.[ФИО] ) 'ФИО', -- flat owner initials
   RTRIM( ул.[Название] )+', д.'+RTRIM( д.[Номер дома] )+', кв.'+RTRIM( кв.[Номер квартиры] ) 'Адрес', -- address
   лс.[Кол-во проживающих], -- really live (person count)
   лс.[Общая площадь], -- total flat square
   лс.[Жилая площадь], -- living flat territory square
   RTRIM( р.[Название] ) 'Название района', -- district name
   RTRIM( жо.[Название] ) 'Название жил.орг.'-- tech.subdivision name
from [Лицевые счета] лс (nolock) -- accounts
join [Квартиры] кв (nolock) -- flats
     on кв.[ИД] = лс.[ИД квартиры]
join [Дома] д (nolock) -- buildings
     on д.[ИД] = кв.[ИД дома]
join [Улицы] ул (nolock) -- streets
     on ул.[ИД] = д.[ИД улицы]
join [Районы] р (nolock) -- city districts
     on р.[ИД] = д.[ИД района]
join [Жил.организации] жо (nolock) -- technical subdivisions
     on жо.[ИД] = д.[ИД ЖО]
where лс.[ИД] = @ИДЛС
if @@ROWCOUNT = 0 RETURN 1
if @@ROWCOUNT > 1
   exec [AUX:RaiseUnexpectedInternalError] N'ЛК:ИнформацияЛС', 'D1BDDEE4-7A8D-452A-8774-2DF1D58C80DD'

----------------------------------------------------------------------------------------------------
if @is_local_tran_open_aux=1 raiserror ('Not closed local transaction was detected, previously opened by BEGIN_TRANSACTION_AUX macro.',11,1); end try begin catch if @is_local_tran_open_aux=1 and (@@trancount>@initial_tran_count_aux or xact_state()=-1) rollback transaction; set @is_local_tran_open_aux=0; throw; end catch; end
/*================================================================================================*/
GO
/*
exec [ЛК:ИнформацияЛС] '09C057D7-772A-43CF-9F8F-DE58A3A283E1'
exec [ЛК:ИнформацияЛС] 'B8707DFD-E4A0-41A5-8D33-F28FBC630898'
*/
exec [AUX:DropProcedures] N'ЛК::%'
GO
--:SetVar Procedure "ЛК::Авторизация" -- authorization
if exists( select * from [sysobjects] (nolock) where [type]='P' and [name]=N'ЛК::Авторизация' )
   drop procedure [ЛК::Авторизация]
GO
/* Translated by $SQLTRANS utility (SQL-file technology). Method author: Sergei Y.Kitáev.
** Script translation date-time: 2022-11-27 00:37:49.55 (stamp of SQL-file generation). */
create procedure [ЛК::Авторизация]
   @КодЛС         bigint,                          -- account code
   @КодДоступа    nvarchar(15),                -- user access code
   @Статус        uniqueidentifier  = null   out,  -- status
   @Сообщение     nvarchar(max) = null   out   -- message
AS
/*==================================================================================================
# Flat owner personal cabinet | MyFlat sample project | Author: Sergei Y.Kitáev
----------------------------------------------------------------------------------------------------
#
# USER AUTHORIZATION:
#
# === Usage: ===
# exec @Возврат = [ЛК::Авторизация] -- authorization
#    @КодЛС = <Account code>, @КодДоступа = <User access code>,
#    @Статус = @<Status GUID variable> out, -- status
#    @Сообщение = @<Error message variable> out -- message
#
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# === Result-set #1: ===
# [ИД ЛС]               uniqueidentifier  not null -- account ID
# [Код ЛС]              bigint            not null -- account code (human R/W as decimal number)
# [Дата регистрации]    datetime2         not null -- registration date (with time)
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# === Result-set #2: ===
# [ФИО]                 $(dt_String_RUH)  not null -- flat owner initials
# [Адрес]               $(dt_String_RUH)  not null -- flat address
# [Кол-во проживающих]  int               not null -- really live (person count)
# [Общая площадь]       $(dt_Square_2)    not null -- total flat territory square
# [Жилая площадь]       $(dt_Square_2)    not null -- living territory square
# [Название района]     $(dt_String_RUH)  not null -- district name
# [Название жил.орг.]   $(dt_String_RUH)  not null -- name of technical subdivision
--------------------------------------------------------------------------------------------------*/
-- commstat_, commstat_, ...
--:SetVar Status_ServiceNotAvailable        "'71F0A024-228F-4199-B2B9-0C70D912D0F1'"
--:SetVar Status_AuthorizationNotPassed     "'7AD9B001-A3D2-4E3F-AD14-018D27742634'"
--:SetVar Status_AccessNotOpen              "'0EDF636D-FDE1-4E07-9C15-6BB123B0DCF2'"
--:SetVar Status_AccountNotFound            "'3BF5D1C7-AA30-410F-A9C0-358035C2A156'"
--:SetVar Status_NewRegistrationRequired    "'64F1A24C-8F10-4A39-A9ED-92E18DBB0751'"
/*================================================================================================*/
begin begin try set xact_abort off; set ansi_nulls,ansi_null_dflt_on,quoted_identifier,arithabort,nocount on; set implicit_transactions off; declare @initial_tran_count_aux int, @is_local_tran_open_aux bit; select @initial_tran_count_aux=@@trancount, @is_local_tran_open_aux=0; end try begin catch throw; end catch; begin try
----------------------------------------------------------------------------------------------------
select @Статус=null, @Сообщение=null
----------------------------------------------------------------------------------------------------
if @КодЛС is null or @КодДоступа is null
   exec [AUX:RaiseIncorrectProcedureCall] N'ЛК::Авторизация'
----------------------------------------------------------------------------------------------------
--exec [AUX:RaiseBlockedProcedure] N'$(Procedure)'
--/*
if DATEPART(second,GETDATE()) >= 50
begin
   select @Статус='71F0A024-228F-4199-B2B9-0C70D912D0F1', @Сообщение=dbo.[AUX:LocalizedText](
      'Every last 10 seconds period of every minute — authorization request is unavailable (for the sake of DB-originated error test).',
      N'Каждый последний 10-секундный период каждой минуты — запрос на авторизацию недоступен (ради тестирования ошибки, исходящей из БД).' )
   RETURN 1
end
--*/
----------------------------------------------------------------------------------------------------
declare @ДатаРегистрации datetime2, @ДоступОткрыт bit, @ИДЛС uniqueidentifier -- reg.date, is access permitted, account ID
select @ДатаРегистрации = [Дата регистрации], @ДоступОткрыт = [Доступ открыт], @ИДЛС = [ИД ЛС]
from [Персональный доступ]
where [Код ЛС] = @КодЛС and [Код доступа] = @КодДоступа
if @@ROWCOUNT = 0
begin
   select @Статус='7AD9B001-A3D2-4E3F-AD14-018D27742634', @Сообщение=dbo.[AUX:LocalizedText](
      'Incorrect login data for account '+CONVERT(varchar(11),@КодЛС)+'. (Authorization has not passed).',
      N'Неправильные данные для входа в Л/С '+CONVERT(varchar(11),@КодЛС)+N'. (Авторизация не прошла.)' )
   RETURN 1
end
if @@ROWCOUNT > 1
   exec [AUX:RaiseUnexpectedInternalError] N'ЛК::Авторизация', '6EAD88FA-598F-4C91-AB88-C88F6555266F'
if @ДоступОткрыт = 0
begin
   select @Статус='0EDF636D-FDE1-4E07-9C15-6BB123B0DCF2', @Сообщение=dbo.[AUX:LocalizedText](
      'Your personal cabinet is inaccessible. (Access is blocked.)',
      N'Ваш кабинет квартиросъёмщика недоступен. (Доступ заблокирован.)' )
   RETURN 1
end

declare @ИДЛСвБД uniqueidentifier -- account ID in DB
select @ИДЛСвБД = [ИД] from [Лицевые счета] with (index=[Код ЛС]) where [Код ЛС] = @КодЛС
if @@ROWCOUNT = 0 goto ЛС_НЕ_ОБНАРУЖЕН
if @@ROWCOUNT > 1
   exec [AUX:RaiseUnexpectedInternalError] N'ЛК::Авторизация', '0517C549-6D11-4893-8DED-8B57C5BBE2C3'

if @ИДЛСвБД is null or @ИДЛС is null
   exec [AUX:RaiseUnexpectedInternalError] N'ЛК::Авторизация', 'A0213AE5-C542-4EC9-9CBB-1842890A4B50'

if @ИДЛСвБД <> @ИДЛС -- If account ID n DB <> account ID:
begin
   select @Статус='64F1A24C-8F10-4A39-A9ED-92E18DBB0751', @Сообщение=dbo.[AUX:LocalizedText](
      'You have to pass repeated registration for access to you account: '+CONVERT(varchar(11),@КодЛС)+'.',
      N'Вам необходимо пройти повторную регистрацию для доступа к Л/С: '+CONVERT(varchar(11),@КодЛС)+N'.' )
   RETURN 1
end

----------------------------------------------------------------------------------------------------
-- Result-set #1:
select
   @ИДЛС [ИД ЛС], -- account ID
   @КодЛС [Код ЛС], -- account code (human readable/writable as decimal number)
   @ДатаРегистрации [Дата регистрации] -- registration date (with time)
----------------------------------------------------------------------------------------------------
-- Result-set #2:
declare @КодОтвета int -- response code
exec @КодОтвета = [ЛК:ИнформацияЛС] @ИДЛС -- account info proc. (arg: account ID)
if @КодОтвета<>0 goto ЛС_НЕ_ОБНАРУЖЕН -- if account not found (ret.code<>0)
----------------------------------------------------------------------------------------------------
RETURN -- SUCCESS
----------------------------------------------------------------------------------------------------
ЛС_НЕ_ОБНАРУЖЕН: -- account not found
select @Статус='3BF5D1C7-AA30-410F-A9C0-358035C2A156', @Сообщение=dbo.[AUX:LocalizedText](
   'Account code is not found: '+CONVERT(varchar(11),@КодЛС)+'.',
   N'Лицевой счёт не обнаружен: '+CONVERT(varchar(11),@КодЛС)+N'.' )
RETURN 1 -- GENERAL FAILURE
----------------------------------------------------------------------------------------------------
if @is_local_tran_open_aux=1 raiserror ('Not closed local transaction was detected, previously opened by BEGIN_TRANSACTION_AUX macro.',11,1); end try begin catch if @is_local_tran_open_aux=1 and (@@trancount>@initial_tran_count_aux or xact_state()=-1) rollback transaction; set @is_local_tran_open_aux=0; throw; end catch; end
/*================================================================================================*/
GO
/*
declare @Возврат int, @Статус uniqueidentifier, @Сообщение nvarchar(max)
exec @Возврат = [ЛК::Авторизация]
   @КодЛС = 1000000021, -- 1000000000 (account ID),
-- @КодЛС = 1000000022, -- account ID
-- @КодЛС = 1000000000, -- account ID
   @КодДоступа = '12345', -- user access code
   @Статус = @Статус out, -- status GUID
   @Сообщение = @Сообщение out -- error message
if @Возврат <> 0 -- If return code not equal zero:
   if @Возврат<>0 select @Возврат 'RetValue', @Статус 'Status', @Сообщение 'Message'
*/
/*
declare @Возврат int, @Статус uniqueidentifier, @Сообщение nvarchar(max)
exec @Возврат = [ЛК::Авторизация]
-- @КодЛС = 1000000021, -- 1000000000 (account ID),
   @КодЛС = 1000000022, -- account ID
-- @КодЛС = 1000000000, -- account ID
   @КодДоступа = '67890', -- user access code
   @Статус = @Статус out, -- status GUID
   @Сообщение = @Сообщение out -- error message
if @Возврат <> 0 -- If return code not equal zero:
   if @Возврат<>0 select @Возврат 'RetValue', @Статус 'Status', @Сообщение 'Message'
*/
--:SetVar Procedure "ЛК::Информация по текущему ФП" -- financial month period info (current fin.term)
if exists( select * from [sysobjects] (nolock) where [type]='P' and [name]=N'ЛК::Информация по текущему ФП' )
   drop procedure [ЛК::Информация по текущему ФП]
GO
/* Translated by $SQLTRANS utility (SQL-file technology). Method author: Sergei Y.Kitáev.
** Script translation date-time: 2022-11-27 00:37:49.55 (stamp of SQL-file generation). */
create procedure [ЛК::Информация по текущему ФП]
   @ИД         uniqueidentifier     = null out, -- not null -- ID
   @Номер      int                  = null out, -- not null -- NO (order number)
   @Название   nvarchar(50)  = null out, -- not null -- name
   @Год        int                  = null out, -- not null -- year
   @Месяц      int                  = null out, -- not null -- month (number)
   @Статус     uniqueidentifier     = null out, -- status
   @Сообщение  nvarchar(max)    = null out  -- message
AS
/*==================================================================================================
# Flat owner personal cabinet | MyFlat sample project | Author: Sergei Y.Kitáev
----------------------------------------------------------------------------------------------------
#
# OBTAINMENT OF CURRENT FINANCIAL MONTH PERIOD (THAT ONE, WHICH IS NOT CLOSED):
#
# === Usage: ===
# exec @Возврат = [ЛК::Информация по текущему ФП]
#    @ИД       = @<Fin.term ID variable> out,
#    @Номер    = @<Fin.term NO variable> out,
#    @Название = @<Fin.term name variable> out,
#    @Год      = @<Variable for year (number)> out,
#    @Месяц    = @<Variable for month (number)> out
#    @Статус   = @Статус out,
#    @Сообщение= @Сообщение out
#
# Parameter @Статус (status) is set to null (by this implementation).
# Parameter @Сообщение (message) is set to null (by this implementation).
#
--------------------------------------------------------------------------------------------------*/
-- commstat_, commstat_, ...
--:SetVar Status_ "''"
/*================================================================================================*/
begin begin try set xact_abort off; set ansi_nulls,ansi_null_dflt_on,quoted_identifier,arithabort,nocount on; set implicit_transactions off; declare @initial_tran_count_aux int, @is_local_tran_open_aux bit; select @initial_tran_count_aux=@@trancount, @is_local_tran_open_aux=0; end try begin catch throw; end catch; begin try
----------------------------------------------------------------------------------------------------
select @Статус=null, @Сообщение=null
----------------------------------------------------------------------------------------------------
declare @СообщениеОшибки nvarchar(max) -- error message for exception throwing (via raiserror)
----------------------------------------------------------------------------------------------------

select
   @ИД      = [ИД], -- ID
   @Номер   = [Номер], -- NO (order number)
   @Название= [Название], -- name
   @Год     = YEAR ( [Дата начала] ), -- year
   @Месяц   = MONTH( [Дата начала] ) -- month (number)
from
   [Финансовые периоды] (nolock)
where
   [Закрыт] = 0 -- is closed = 0 (not closed)
if @@ROWCOUNT <> 1
begin
   set @СообщениеОшибки = dbo.[AUX:LocalizedText]( -- error message for exception
      'Can not determine curent financial period (month).',
      N'Не удаётся определить текущий финансовый период.' )
   raiserror (@СообщениеОшибки,11,1) -- exception is throwing here
end

----------------------------------------------------------------------------------------------------
if @is_local_tran_open_aux=1 raiserror ('Not closed local transaction was detected, previously opened by BEGIN_TRANSACTION_AUX macro.',11,1); end try begin catch if @is_local_tran_open_aux=1 and (@@trancount>@initial_tran_count_aux or xact_state()=-1) rollback transaction; set @is_local_tran_open_aux=0; throw; end catch; end
/*================================================================================================*/
GO
/*
declare @Возврат int, @Статус uniqueidentifier, @Сообщение nvarchar(max)
declare @ИД uniqueidentifier, @Номер int, @Название nvarchar(50), @Год int, @Месяц int
exec @Возврат = [ЛК::Информация по текущему ФП]
   @ИД      = @ИД       out,  -- ID
   @Номер   = @Номер    out,  -- NO (order number)
   @Название= @Название out,  -- name
   @Год     = @Год      out,  -- year
   @Месяц   = @Месяц    out   -- month (number)
if @Возврат <> 0 -- If return code not equal zero:
   select @Возврат 'RetValue', @Статус 'Status', @Сообщение 'Error'
else
select
   @ИД         'Ид-р фин.периода',  -- ID
   @Номер      'Номер',             -- NO (order number)
   @Название   'Наименование',      -- name
   @Год        'Год',               -- year
   @Месяц      'Месяц (номер)'      -- month (number)
*/
--:SetVar Procedure "ЛК::Получение списка услуг" -- flat service list selection
if exists( select * from [sysobjects] (nolock) where [type]='P' and [name]=N'ЛК::Получение списка услуг' )
   drop procedure [ЛК::Получение списка услуг]
GO
/* Translated by $SQLTRANS utility (SQL-file technology). Method author: Sergei Y.Kitáev.
** Script translation date-time: 2022-11-27 00:37:49.55 (stamp of SQL-file generation). */
create procedure [ЛК::Получение списка услуг]
   @СДопускомНаличияИПУ bit = 0, -- with admission of consumption measurement device(s)
   @Статус              uniqueidentifier  = null out, -- status
   @Сообщение           nvarchar(max) = 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 begin try set xact_abort off; set ansi_nulls,ansi_null_dflt_on,quoted_identifier,arithabort,nocount on; set implicit_transactions off; declare @initial_tran_count_aux int, @is_local_tran_open_aux bit; select @initial_tran_count_aux=@@trancount, @is_local_tran_open_aux=0; end try begin catch throw; end catch; begin try
----------------------------------------------------------------------------------------------------
select @Статус=null, @Сообщение=null
----------------------------------------------------------------------------------------------------
if @СДопускомНаличияИПУ is null
   exec [AUX:RaiseIncorrectProcedureCall] N'ЛК::Получение списка услуг'
----------------------------------------------------------------------------------------------------

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

----------------------------------------------------------------------------------------------------
if @is_local_tran_open_aux=1 raiserror ('Not closed local transaction was detected, previously opened by BEGIN_TRANSACTION_AUX macro.',11,1); end try begin catch if @is_local_tran_open_aux=1 and (@@trancount>@initial_tran_count_aux or xact_state()=-1) rollback transaction; set @is_local_tran_open_aux=0; throw; end catch; end
/*================================================================================================*/
GO
/*
declare @Возврат int, @Статус uniqueidentifier, @Сообщение nvarchar(max)
exec [ЛК::Получение списка услуг] @Сообщение = @Сообщение out
if @Возврат <> 0 -- If return code not equal zero:
   if @Возврат<>0 select @Возврат 'RetValue', @Статус 'Status', @Сообщение '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 @Возврат<>0 select @Возврат 'RetValue', @Статус 'Status', @Сообщение 'Message'
else if @Сообщение is not null
   select @Сообщение 'Message' -- informational message (about empty service list/selection)
*/
