Files
Bridge-and-Join-s/internal/lkgateway/fsql/depodetect.go
T
fontvielle 03918b1e58 Firebird: автоопределение из DEPO как на MSSQL — реквизиты организации и поиск без учёта регистра
Проверено по шагам мастера, что bj берёт из DEPO сам: подготовка базы, префикс счетов (шаг 3), реквизиты
(шаг 4), готовность (шаг 10), ручной ввод, подбор клиента для портфеля ЛК.
- Реквизиты (Det01): счёт НРД ссылается на исходную версию лица, а ИНН НРД бывает только в новых (в исходной —
  ИНН НДЦ) — лицо по любой версии (ID или SELF_ID; ИНН НРД или MNEM «НДЦ»); номер счёта — и «счёт/раздел»,
  не только «счёт/LEI/код/раздел». Счёт НРД — тот, с которым записан выбранный раздел (пара «раздел + счёт»
  — по ней процедуры находят место хранения), а не самый частый. Для MSSQL — только шире: прежнее находится.
- Поиск по ФИО, договору и счёту — без учёта регистра, как в MSSQL (Cyrillic_General_CI_AS): в базе Fancy
  с кодировкой NONE регистр кириллицы различается — Firebird-варианты сравнивают в WIN1251 (подбор клиента
  для портфеля ЛК — запросы вынесены в fsql/lkportfolio.go, поиск и список договоров).
- На копии базы: шаг 4 — счёт, код, разделы, ИНН и наименования организации; поиск «бр-1147», «бубликов»
  находит; FBLivePrepare — 103 из 103.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
2026-10-27 20:09:59 +03:00

25 lines
2.4 KiB
Go

package fsql
// Автоопределение реквизитов депозитария в DEPO (Fancy) для первичной настройки.
// Det01 — счета депозитария в НРД: в DEPO это счета «лица НКО АО НРД» (ИНН 7702165310 одинаков у всех
// клиентов Fancy; кодировщик НРД — MNEM «НДЦ»). Счёт ссылается на исходную версию лица (SELF_ID), а ИНН НРД
// бывает только в новых (в исходной — прежний ИНН НДЦ), поэтому лицо — по любой версии. NUMBER —
// <депозитарный счёт>/<LEI>/<код>/<раздел> или <депозитарный счёт>/<раздел> (обезличенная база Fancy на Firebird).
var Det01 = `SELECT c.NUMBER, ISNULL(c.STATE,0), ISNULL(c.NAME,'') FROM OD_CLIENTS c
WHERE c.NUMBER LIKE '%/%' AND EXISTS (SELECT 1 FROM OD_FACES f WHERE (f.ID = c.FACE OR f.SELF_ID = c.FACE)
AND (f.INN = '7702165310' OR f.MNEM = N'НДЦ'))
ORDER BY c.STATE, c.NUMBER`
// Det03 — карточка организации по коду участника НРД: действующая версия лица (кодер ссылается на исходную
// запись SELF_ID, действующая — LAST_FLAG=1) и юридические наименования из OD_U_FACES. NAME в OD_FACES —
// краткое («ООО "…"»), полное и английское полное — только в OD_U_FACES, английское краткое — OD_FACES.ENG_NAME.
var Det03 = `SELECT TOP 1 ISNULL(f.NAME,''), ISNULL(f.INN,''), ISNULL(f.MNEM,''), ISNULL(f.ENG_NAME,''), ISNULL(u.FULL_NAME,''), ISNULL(u.ENG_FULL_NAME,'')
FROM OD_FACE_CODERS fc JOIN OD_FACES f ON (f.ID=fc.FACE OR f.SELF_ID=fc.FACE) LEFT JOIN OD_U_FACES u ON u.FACE=f.ID
WHERE fc.CODE=@code ORDER BY ISNULL(f.LAST_FLAG,0) DESC, f.B_DATE DESC, f.ID DESC`
// Det02 — карточка организации по коду участника НРД (кодер лица); запасной вариант, если в DEPO нет
// OD_U_FACES или версионных полей.
var Det02 = `SELECT TOP 1 ISNULL(f.NAME,''), ISNULL(f.INN,''), ISNULL(f.MNEM,''), ISNULL(f.ENG_NAME,'')
FROM OD_FACE_CODERS fc JOIN OD_FACES f ON f.ID=fc.FACE WHERE fc.CODE=@code ORDER BY f.E_DATE DESC, f.ID DESC`