Загрузка данных


Бизнес-требования по функционалу «Отчет по стратегиям на конец периода» на Омниканальной платформе «НПФ 360»
 

Оглавление

1.	Общие требования	3
2.	Описание отчета по стратегиям на конец периода	4


 

1.	Общие требования
На омниканальной платформе НПФ-360, для ведения отчетности БУ, необходимо реализовать новый функционал: «Отчет по стратегиям на конец периода». В отчете отражаются движения по каждой схеме в разбивке по стратегии, за указанный период.
В модуле: «Персонифицированный учет» - «Отчетность» - «БУ» требуется добавить новый подраздел «Отчет по стратегиям на конец периода», в соответствии с рисунком 1.  
Рис.1. Путь к разделу
 
На странице раздела должны находиться фильтрация, таблица «Отчет по стратегиям на конец периода», макет страницы представлен на рисунке 2.
Рис.2. Макет
 









2.	Описание отчета по стратегиям на конец периода
Отчет формируется по всем остаткам (баланс) по пенсионным счетам, в разрезе пенсионных схем (поле «Индекс схемы», добавление поля описано в задаче №110080, хранится в справочнике: «Персонифицированный учет» - «Справочники» - «Общие» - «Пенсионные схемы»;) и пенсионных стратегий (на данный момент хранится на договоре, в дальнейшем будет перенесено на счет), на дату отчета. 
В начале страницы в разделе «Отчет по стратегиям на конец периода», содержится фильтрация, в соответствии с рисунком 3.
Рис.3. Фильтрация
 
Фильтрация содержит поля:
•	«Период с»: тип поля – календарь, в формате «ДД.ММ.ГГГГ»;
•	«Период по»: тип поля – календарь, в формате «ДД.ММ.ГГГГ», поле обязательно для формирования отчета;
•	«Индекс схемы»: тип поля – выпадающий список, параметры хранятся в справочнике: «Персонифицированный учет» - «Справочники» - «Общие» - «Пенсионные схемы», поле «Индекс схемы», добавление поля описано в задаче №110080;
•	 «Стратегия»: тип поля – выпадающий список, параметры хранятся в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии».
Кнопки:
•	Сформировать – по нажатию на кнопку формируется отчет на указанный период. Недоступна, если не заполнено поле: «Период по:»;
•	Найти – по нажатию на кнопку применяются установленные фильтры;
•	Сбросить – по нажатию на кнопку установленные фильтры сбрасываются;
Ниже находится таблица «Отчет по стратегиям на конец периода», в таблице отражаются остатки по каждой схеме в разбивке по стратегии, за указанный период. В столбце «Схема», в каждой строке, содержится «Индекс схемы» (хранится на «Пенсионной схеме», добавление поля описано в задаче №110080, которая хранится, на данный момент на договоре, в дальнейшем будет перенесено на счет), остальные столбцы являются разбивкой каждой схемы по пенсионным стратегиям, указанным в наименовании столбца, которая так же на данный момент хранится на договоре, (поле «инвест. стратегия», в дальнейшем пенс. схема должна храниться на счете, и иметь инвестиционную стратегию).

Рис.4. Отчет по стратегиям  
 

Табл. 1. Поля таблицы «по стратегиям на конец периода»
№	1	2	3
0	Наименование	Формат	Описание
1	Схема	-Тип: Текстовое поле;	Отображается индекс пенсионной схемы который хранится на пенсионном счете, поле «Индекс схемы»;
2	Базовая (БОЛ)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
3	Базовая (ДБ)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
4	Базовая 2024 (БОЛ)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
5	Базовая 2024 (БУД)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
6	Базовая 2024 (ДБ)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
7	Базовая 2024 (ОПФ)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
8	Базовая 2024 (ПЕР)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
9	Базовая ПДС (БОЛ)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
10	Базовая ПДС (БУД)		-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
11	Базовая ПДС (ДБ)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
12	Базовая ПДС (ОПФ)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
13	Базовая ПДС (ПЕР)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
14	Базовая ПДС (ТС)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
15	Базовая ПДС (ФЕД)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
16	Базовый (ОПФ)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
17	Базовый (ПЕР)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
18	Гарант_2027_ПДС (БУД)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
19	Гарант_2027_ПДС (ДБ)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
20	Консервативная стратегия	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
21	Общий (старое НПО)	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
22	С гарантированной доходностью	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
23	Сбалансированная	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
24	Сбалансированная_2024	-Тип: Числовое поле;	Отображается агрегированная сумма остатков (баланс) по пенсионным счетам, в разбивке пенсионной схемы (поле: «Индекс схемы»), и указанной в наименовании столбца стратегии (поле: «Инвестиционная стратегия», параметр хранится на данный момент на договоре, в дальнейшем, будете перенесен на счет), на конец периода (включительно).  Стратегия из наименования столбца должна хранится в справочнике: «Продуктовая линейка» - «Справочники» - «Общие» - «Инвестиционные стратегии» (справочник будет наполнен после миграции.)
25	Итого	-Тип: Числовое поле;	Отображается агрегированная итоговая сумма по схеме, в разбивке по всем стратегиям на конец периода (включительно); 
На последней строке таблицы, в столбце «Схема» выводить строку «Итого:», в которой отображается общая сумма остатков в разбивке по стратегии, пример заполнения на рисунке 4.
Под таблицей должна находиться кнопка «Выгрузить отчёт», рисунок 4, по нажатию которой должен выгружаться файл в формате, представленном ниже:
 





WITH base AS (
     SELECT
        e.name AS schema_name,
        s.name AS strategy_name,
        t.value
    FROM back_office.eps_transaction et
    JOIN back_office.eps_transaction_source ets
        ON ets.id = et.eps_transaction_source_id
    JOIN ourpension.eps e
        ON e.id = et.eps_id
    JOIN back_office.transaction t
        ON t.operation_id = ets.operation_id
    JOIN back_office.posted_register_details prd
        ON prd.operation_id = ets.operation_id
    JOIN ourpension.invest_strategy_history ish
        ON ish.contract_id = prd.contract_id
        AND t.period_date BETWEEN ish.begin_date
            AND COALESCE(ish.end_date, cast('infinity' as timestamp))
    JOIN prod_line.hb_invest_strategy s
        ON s.id = ish.strategy_id
    WHERE --1=1
	(
            '$!date_from' != '' OR 
            '$!date_to' != '' OR 
            '$!schema_index' != '' OR 
            '$!strategy' != ''
        )
	
    #if ("$!date_from" != "")
        AND t.period_date >= TO_DATE(:date_from, 'DD.MM.YYYY')
    #end
    #if ("$!date_to" != "")
        AND t.period_date <= TO_DATE(:date_to, 'DD.MM.YYYY')
    #end
    #if ("$!schema_index" != "")
        AND e.code = :schema_index
    #end
    #if ("$!strategy" != "")
        AND s.id = CAST(:strategy AS bigint)
    #end
                ),
strategies_report AS (
    SELECT
        schema_name,
        SUM(CASE WHEN strategy_name = 'Базовая (БОЛ)'                 THEN value ELSE 0 END) AS bazovaya_bol,
        SUM(CASE WHEN strategy_name = 'Базовая (БУД)'                 THEN value ELSE 0 END) AS bazovaya_bud,
        SUM(CASE WHEN strategy_name = 'Базовая (ДБ)'                  THEN value ELSE 0 END) AS bazovaya_db,
        SUM(CASE WHEN strategy_name = 'Базовая 2024 (БОЛ)'            THEN value ELSE 0 END) AS bazovaya_2024_bol,
        SUM(CASE WHEN strategy_name = 'Базовая 2024 (БУД)'            THEN value ELSE 0 END) AS bazovaya_2024_bud,
        SUM(CASE WHEN strategy_name = 'Базовая 2024 (ДБ)'             THEN value ELSE 0 END) AS bazovaya_2024_db,
        SUM(CASE WHEN strategy_name = 'Базовая 2024 (ОПФ)'            THEN value ELSE 0 END) AS bazovaya_2024_opf,
        SUM(CASE WHEN strategy_name = 'Базовая 2024 (ПЕР)'            THEN value ELSE 0 END) AS bazovaya_2024_per,
        SUM(CASE WHEN strategy_name = 'Базовая ПДС (БОЛ)'             THEN value ELSE 0 END) AS bazovaya_pds_bol,
        SUM(CASE WHEN strategy_name = 'Базовая ПДС (БУД)'             THEN value ELSE 0 END) AS bazovaya_pds_bud,
        SUM(CASE WHEN strategy_name = 'Базовая ПДС (ДБ)'              THEN value ELSE 0 END) AS bazovaya_pds_db,
        SUM(CASE WHEN strategy_name = 'Базовая ПДС (ОПФ)'             THEN value ELSE 0 END) AS bazovaya_pds_opf,
        SUM(CASE WHEN strategy_name = 'Базовая ПДС (ПЕР)'             THEN value ELSE 0 END) AS bazovaya_pds_per,
        SUM(CASE WHEN strategy_name = 'Базовая ПДС (ТС)'              THEN value ELSE 0 END) AS bazovaya_pds_ts,
        SUM(CASE WHEN strategy_name = 'Базовая ПДС (ФЕД)'             THEN value ELSE 0 END) AS bazovaya_pds_fed,
        SUM(CASE WHEN strategy_name = 'Базовый (ОПФ)'                 THEN value ELSE 0 END) AS bazovyy_opf,
        SUM(CASE WHEN strategy_name = 'Базовый (ПЕР)'                 THEN value ELSE 0 END) AS bazovyy_per,
        SUM(CASE WHEN strategy_name = 'Гарант_2027_ПДС (БУД)'        THEN value ELSE 0 END) AS garant_2027_pds_bud,
        SUM(CASE WHEN strategy_name = 'Гарант_2027_ПДС (ДБ)'         THEN value ELSE 0 END) AS garant_2027_pds_db,
        SUM(CASE WHEN strategy_name = 'Консервативная (Будущее)'      THEN value ELSE 0 END) AS konservativnaya,
        SUM(CASE WHEN strategy_name = 'Общий (старое НПО)'            THEN value ELSE 0 END) AS obshiy_npo,
        SUM(CASE WHEN strategy_name = 'С гарантированной доходностью' THEN value ELSE 0 END) AS guaranteed,
        SUM(CASE WHEN strategy_name = 'Сбалансированная'              THEN value ELSE 0 END) AS sbalansirovannaya,
        SUM(CASE WHEN strategy_name = 'Сбалансированная_2024'         THEN value ELSE 0 END) AS sbalansirovannaya_2024,
				SUM(value) as total
    FROM base
    GROUP BY schema_name
)
SELECT
  sr.schema_name as schema_name,
  sr.bazovaya_bol as bazovaya_bol,
  sr.bazovaya_db as bazovaya_db,
  sr.bazovaya_bud as bazovaya_bud,
  sr.bazovaya_2024_bud as bazovaya_2024_bud,
  sr.bazovaya_2024_bol as bazovaya_2024_bol,
  sr.bazovaya_2024_db as bazovaya_2024_db,
  sr.bazovaya_2024_opf as bazovaya_2024_opf,
  sr.bazovaya_2024_per as bazovaya_2024_per,
  sr.bazovaya_pds_bol as bazovaya_pds_bol,
  sr.bazovaya_pds_bud as bazovaya_pds_bud,
  sr.bazovaya_pds_db as bazovaya_pds_db,
  sr.bazovaya_pds_opf as bazovaya_pds_opf,
  sr.bazovaya_pds_per as bazovaya_pds_per,
  sr.bazovaya_pds_ts as bazovaya_pds_ts,
  sr.bazovaya_pds_fed as bazovaya_pds_fed,
  sr.bazovyy_opf as bazovyy_opf,
  sr.bazovyy_per as bazovyy_per,
  sr.garant_2027_pds_bud as garant_2027_pds_bud,
  sr.garant_2027_pds_db as garant_2027_pds_db,
  sr.konservativnaya as konservativnaya,
  sr.obshiy_npo as obshiy_npo,
  sr.guaranteed as guaranteed,
  sr.sbalansirovannaya as sbalansirovannaya,
  sr.sbalansirovannaya_2024 as sbalansirovannaya_2024,
  sr.total as total 
FROM strategies_report sr





<!DOCTYPE html>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>
<%@ page session="true" language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<html lang="ru">
<jsp:include page="head.jsp"/>
<body>

<script type="text/javascript" src="<c:url value='/js/${version}/queryAction.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/${version}/queryTable.js'/>"></script>

<script type="text/javascript">
$(function () {

   
    var reportTable = new QueryTable("tbl_strategies_end_period", {
        initComplete: function (queryAction) {
        },
        onRowSelect: function (data, index) {},
        onRowDeselect: function (data, index) {},
        drawCallback: function (settings) {}

    }, function () {
         var data = {};

    if ($('#filter\\.date_from').val())
        data.date_from = $('#filter\\.date_from').val();

    if ($('#filter\\.date_to').val())
        data.date_to = $('#filter\\.date_to').val();

    if ($('#filter\\.schema_index').select2('val'))
        data.schema_index = $('#filter\\.schema_index').select2('val');

    if ($('#filter\\.strategy').select2('val'))
        data.strategy = $('#filter\\.strategy').select2('val');

    return data;
    }, {
        selectFirstRow: false
    });

   
    $('#filter\\.schema_index').select2({
        allowClear: true,
        ajax: {
            url: "queryModel?queryModelCode=z1okb7T4",
            dataType: 'json',
            type: "POST",
            data: function (term, page) { return { term: term }; },
            results: function (data, page) { return { results: data.list }; }
        },
        formatResult:    function (d) { return '<div>' + d.name + '</div>'; },
        formatSelection: function (d) { return d.name; },
        escapeMarkup:    function (m) { return m; }
    });

    $('#filter\\.strategy').select2({
        allowClear: true,
        ajax: {
            url: "queryModel?queryModelCode=IHIM4K9t",
            dataType: 'json',
            type: "POST",
            data: function (term, page) { return { term: term }; },
            results: function (data, page) { return { results: data.list }; }
        },
        formatResult:    function (d) { return '<div>' + d.name + '</div>'; },
        formatSelection: function (d) { return d.name; },
        escapeMarkup:    function (m) { return m; }
    });

    // ---- Кнопка "Сформировать" ----
    $('#btn\\.generate').click(function () {
        var dateFrom = $('#filter\\.date_from').val();
        var dateTo   = $('#filter\\.date_to').val();

        if (!dateFrom || !dateTo) {
            alert('Заполните поля "Период с" и "Период по"');
            return;
        }
        $('#isShow').val(1);
        reportTable.reload();
    });

    // ---- Кнопка "Найти" ----
    $('#btn\\.search').click(function () {
        reportTable.reload();
    });

    // ---- Кнопка "Сбросить" ----
    $('#btn\\.reset').click(function () {
        $('#filterForm')[0].reset();
        $('#filter\\.schema_index').select2('val', null);
        $('#filter\\.strategy').select2('val', null);
        $('#isShow').val(0);
        reportTable.reload();
    });

});
</script>

<jsp:include page="header.jsp"/>
<jsp:include page="navbar.jsp"/>

<div class="container" id="mainContainer">
    <div class="page-header">
        <h1>Отчёт по стратегиям на конец периода</h1>
    </div>
    <div class="container-fluid">
        <div class="row row-main">
            <jsp:include page="sidebar.jsp"/>
            <div class="col-sm-10">
                <tags:breadcrumbs path="https://portal.futurenpf.ru/knowledgebase/category/XXXXX/"/>

                <form id="filterForm" class="form-horizontal">

                   
                    <div class="col-sm-3">
                        <label for="filter.date_from">Период с</label>
                        <input type="text" id="filter.date_from" name="filter.date_from"
                               class="form-control date-picker-on" placeholder="дд.мм.гггг" maxlength="10">
                    </div>
                    <div class="col-sm-3">
                        <label for="filter.date_to">Период по</label>
                        <input type="text" id="filter.date_to" name="filter.date_to"
                               class="form-control date-picker-on" placeholder="дд.мм.гггг" maxlength="10">
                    </div>
                    <div class="col-sm-3" style="margin-top: 25px;">
                        <button id="btn.generate" type="button" class="btn btn-primary">
                            Сформировать
                        </button>
                    </div>

                    <div class="clearfix" style="margin-bottom: 12px;"></div>

                   
                    <div class="col-sm-3">
                        <label for="filter.schema_index">Индекс схемы</label>
                        <input type="hidden" id="filter.schema_index" name="filter.schema_index"
                               class="form-control" style="width:100%">
                    </div>
                    <div class="col-sm-3">
                        <label for="filter.strategy">Стратегия</label>
                        <input type="hidden" id="filter.strategy" name="filter.strategy"
                               class="form-control" style="width:100%">
                    </div>
                    <div class="col-sm-3" style="margin-top: 25px;">
                        <button id="btn.search" type="button" class="btn btn-success">
                            <span class="glyphicon glyphicon-search"></span> Найти
                        </button>
                        <button id="btn.reset" type="button" class="btn btn-warning" style="margin-left: 6px;">
                            <span class="glyphicon glyphicon-trash"></span> Сбросить
                        </button>
                    </div>

                    <div class="clearfix"></div>

                </form>

                <input type="hidden" id="isShow" value="0">

                <div class="row" style="margin-top: 15px;">
                    <div class="col-sm-12">
                        <jsp:include page="queryTable.jsp">
                            <jsp:param name="queryTableCode" value="tbl_strategies_end_period"/>
                            <jsp:param name="queryTableStyle" value="width: 100%; white-space: nowrap;"/>
                        </jsp:include>
                    </div>
                </div>

            </div>
        </div>
    </div>
</div>

<jsp:include page="footer.jsp"/>
</body>
</html>