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


# sr0420723_r3
В ходе тестирования обнаружили, что пользователи, фигурирующие в users и не имеющие сделок (записенй в deals) не попадают в отчетную форму в графу Количество обладателей цифровых финансовых активов и иных цифровых прав по состоянию на конец отчетного квартала.

Необходимо реализовать логику, при которой пользователей, имеющий флаг user_is_owner='TRUE' и не имеющий записей в таблитце deals за период, заданный в выборке, попадал в отчет как неактивный владелец.

Дополнительно необходимо реализовать новый промежуточный файл с такими записями с названием sr0420723_r3_3_intermediate_users-deals-relation со следующими атрибутами:

user_uuid - обязательное поле
deal_id - необязательное поле, допускается null
deal_is_active - необязательное поле, если deal_id is null, то указывается значение false, иначе - соответвует логике атрибута deal_id промежуточного файла sr0420723_r3_3_intermediate_deals.
*Альтернативно созданию нового промежуточного файла является добавление в промежуточный файл *sr0420723_r3_3_intermediate_users атрибута deal_is_active по описанной выше логике

# sr0420736_r2_2
Необходимо скорректировать скрипт выборки операций в соот-ии с запросом ниже + убрать закомиченные строки + заменить константы дат на параметры + добавить группировку операций по кодам в соот-ии с описанием ниже + СТОЛБЦЫ F И G ЗАПОЛНЯТЬСЯ НЕ ДОЛЖНЫ!

 
with params as (

select '2026-01-01'::date as start_date

, '2026-03-31'::date as end_date

)

select o.id

, o.type

, o.amount

, o.total_amount

, o.confirmed_at

, o.bank_confirmed_at

from params, operation o

where --o.type in ('WITHDRAWAL', 'TRANSFER')

o.type = 'WITHDRAWAL'

and o.status = 'SUCCEEDED'

and coalesce(o.bank_confirmed_at, o.confirmed_at)::date >= params.start_date

and coalesce(o.bank_confirmed_at, o.confirmed_at)::date <= params.end_date

– ДОБАВИЛИ ЭТО УСЛОВИЕ:

and o.user_id != '00000000-0000-0000-0000-000000000000'

order

by coalesce(o.bank_confirmed_at, o.confirmed_at)

;

 

группировка по кодам в соотв-ии с этими условиями:

 

Код операции: заполняется по следующему алгоритму только для значения константы '40701810826806000054' поля "Банковский счет":

константа '01': если пользователь с типом ФЛ (profiles.users.type='INDIVIDUAL') или ИП (profiles.users.type='ENTREPRENEUR') и имеюшим признак резидента РФ (profiles.personal_data.citizenship='RU') перечисляет денежные средства с номинального счета на свой банковский счет - учитывается по наличию в money.operation записей, где money.operation.type='WITHDRAWAL' и money.operation.user_id=profiles.users.id, profiles.users.id=profiles.profile.user_id, profiles.profile.id=(profiles.individual_profile.id ИЛИ profiles.enterpreneur_profile.id), (profiles.individual_profile ИЛИ profiles.enterpreneur_profile).personal_data_id=profiles.personal_data.id.
- константа '06' - соответствует условиям константы '01'.
- константа '03': если пользователь с типом ЮЛ (profiles.users.type='LEGAL') перечисляет денежные средства с номинального счета на свой банковский счет - учитывается по наличию в money.operation записей, где money.operation.type='WITHDRAWAL' и money.operation.user_id=profiles.users.id.
- константа '10' - соответствует условиям константы '03'.
- константа 'Ошибка!' - во всех остальных случаях
 
# sr0420736_r2_3
Необходимо скорректировать скрипт выборки операций в соот-ии с запросом ниже + убрать закомментированные строки + заменить константы дат на параметры + добавить группировку операций по кодам в соот-ии с описанием ниже:

 

with params as (
select '2026-01-01'::date as start_date
, '2026-03-31' ::date as end_date
)
select o.id
, o.type
, o.amount
, o.confirmed_at
, o.bank_confirmed_at

, o.purpose
from params, operation o
where o.type = 'WITHDRAWAL'
and o.status = 'SUCCEEDED'
--Новое условие фильтрации
and o.user_id = '00000000-0000-0000-0000-000000000000'
and coalesce(o.bank_confirmed_at, o.confirmed_at)::date >= params.start_date
and coalesce(o.bank_confirmed_at, o.confirmed_at)::date <= params.end_date
order
by coalesce(o.bank_confirmed_at, o.confirmed_at);

 

 Код операции по списанию (перечислению): заполняется по следующему алгоритму только для значения константы '40701810826806000054' поля "Банковский счет": -константа '16': если есть записи о возврате ошибочных платежей - ДОБАВИТЬ ЗАПРОС К НОВОМУ СЕРВИСУ ДЛЯ ПОИСКА ОШИБОЧНЫХ ПЛАТЕЖЕЙ (ПРИМЕР ЗАПРОСА БУДЕТ НИЖЕ).

константа '18': если есть записи о списании с номинального счета комиссий по операциям: определяется по o.purpose like '%Перечисление вознаграждения%' 

-константа '19': если есть записи о списании с номинального счета удержанного НДФЛ. определяется по o.purpose like '%НДФЛ%' 

 
Пример запроса.
ВАЖНО! Запрос соединяет данные 2-х сервисов, необходимо привести его к виду, при которому запрос будет работать корректно
 ** 
select sum (amount) from payments-integration.return_payments rp inner join money.operation o on rp.operation_return_id=o.id where rp.payment_return_status = 'REFUND_DONE' and o.bank_confirmed_at >='2026-01-01' and o.bank_confirmed_at <='2026-03-31'
 
# sr0420736_r3
Необходимо скорректировать скрипт выборки записей из запроса
select br.balance from transaction_record tr inner join balance_record br on br.id = tr.id where tr.account_id = %s and tr.created_at <= %s order by tr.created_at desc limit 1;
 таким образом, чтобы created_at ВКЛЮЧАЛО граничную дату ПО 23:59:59

# sr0420736_r3
Необходимо скорректировать скрипт выборки записей из запроса
select br.balance from transaction_record tr inner join balance_record br on br.id = tr.id where tr.account_id = %s and tr.created_at <= %s order by tr.created_at desc limit 1;
 таким образом, чтобы created_at ВКЛЮЧАЛО граничную дату ПО 23:59:59
 
# sr0420736_r2_4
Необходимо скорректировать скрипт в соответствии с примером ниже + заменить константы на параметры + убрать замкомменченные строки + изменить логику учета сделок.

 

 
with params as (

select '2026-01-01'::date as start_date

, '2026-03-31' ::date as end_date

)

select o.id

, o.type

, o.amount

, o.total_amount

, o.confirmed_at

, o.bank_confirmed_at

– ДОБАВИЛИ В СЕЛЕКТ ЭТО:

, o.tax

from params, operation o

– ИЗМЕНЯЕМ ТУТ УСЛОВИЕ:

where (o.type = 'TRANSFER' or (o.type = 'WITHDRAWAL' and o.tax!=0))

and o.status = 'SUCCEEDED'

and coalesce(o.bank_confirmed_at, o.confirmed_at)::date >= params.start_date

and coalesce(o.bank_confirmed_at, o.confirmed_at)::date <= params.end_date

order

by coalesce(o.bank_confirmed_at, o.confirmed_at)

;

 

Для столбца C необходимо взять сумму total_amount по записям где type = 'TRANSFER' и прибавить значения tax где otype = 'WITHDRAWL'

Для столбца D необходимо рассчитать кол-во таких операций.

Для столбца E необходимо использовать  БД release-service по примеру ниже:
Пример запроса

select (sum (d.total_price ))/100 from deals d
 
where d.executed_at :: date >='2026-01-01' and d.executed_at :: date <='2026-03-31' and d.settlements_type ='platform'

 

Для столбца F необходимо использовать БД release-service по примеру ниже:
select count(d.id ) from deals d where d.executed_at :: date >='2026-01-01' and d.executed_at :: date <='2026-03-31' and d.settlements_type ='platform'