Загрузка данных
# 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'