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
This commit is contained in:
@@ -8,6 +8,7 @@ package lkgateway
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"net/url"
|
||||
"os"
|
||||
"strconv"
|
||||
@@ -31,6 +32,15 @@ func fbLiveSettings(t *testing.T) FancyMSSQLSettings {
|
||||
DepoDatabase: strings.TrimPrefix(u.Path, "/"), AccountPrefix: os.Getenv("BJ_FB_TEST_ACC")}
|
||||
}
|
||||
|
||||
func fbLiveDB(t *testing.T, s FancyMSSQLSettings) *sql.DB {
|
||||
db, err := fancyOpen(s, s.DepoDB())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Cleanup(func() { db.Close() })
|
||||
return db
|
||||
}
|
||||
|
||||
func TestFBLiveLK(t *testing.T) {
|
||||
s := fbLiveSettings(t)
|
||||
rc, err := NewRuntimeConfig(t.TempDir() + "/setup.json")
|
||||
@@ -78,6 +88,15 @@ func TestFBLiveLK(t *testing.T) {
|
||||
check("depoListContracts", err, len(lst), first(len(lst), lst))
|
||||
fnd, err := depoFindContracts(ctx, s, contract[:2], 5)
|
||||
check("depoFindContracts", err, len(fnd), fnd)
|
||||
// поиск без учёта регистра, как в MSSQL: строчными буквами
|
||||
low := strings.ToLower(contract)
|
||||
fnd, err = depoFindContracts(ctx, s, low, 5)
|
||||
check("depoFindContracts("+low+")", err, len(fnd), fnd)
|
||||
lst, err = depoListContracts(ctx, s, low, 5)
|
||||
check("depoListContracts("+low+")", err, len(lst), lst)
|
||||
if len(fnd) == 0 || len(lst) == 0 {
|
||||
t.Errorf("поиск договора строчными (%s) не нашёл", low)
|
||||
}
|
||||
t.Logf("depoSuggestContracts: %v", depoSuggestContracts(ctx, s))
|
||||
|
||||
ids, face, accs, err := depoClientIDs(ctx, s, contract)
|
||||
@@ -130,10 +149,23 @@ func TestFBLiveLK(t *testing.T) {
|
||||
}
|
||||
ver, upd, err := depoVersion(ctx, s)
|
||||
t.Logf("depoVersion: %q %q %v", ver, upd, err)
|
||||
rd := readyDepo(ctx, rc)
|
||||
t.Logf("readyDepo (шаг 10): %s — %s", rd.State, rd.Detail)
|
||||
|
||||
fio := strings.Fields(os.Getenv("BJ_FB_TEST_FIO"))
|
||||
pp := strings.Fields(os.Getenv("BJ_FB_TEST_PASSPORT"))
|
||||
if len(fio) == 3 && len(pp) == 2 {
|
||||
cl, err := lkPortfolioClients(ctx, rc, strings.ToLower(fio[0]))
|
||||
check("lkPortfolioClients("+strings.ToLower(fio[0])+")", err, len(cl), cl)
|
||||
if len(cl) == 0 {
|
||||
t.Errorf("подбор клиента для портфеля ЛК строчными (%s) не нашёл", strings.ToLower(fio[0]))
|
||||
}
|
||||
pairs, err := lkPortfolioAllPairs(ctx, rc, fbLiveDB(t, s))
|
||||
check("lkPortfolioAllPairs", err, len(pairs), pairs)
|
||||
low, _ := manualDepoSearch(rc, strings.ToLower(fio[0]))
|
||||
if len(low) == 0 {
|
||||
t.Errorf("ручной поиск клиента строчными (%s) не нашёл", strings.ToLower(fio[0]))
|
||||
}
|
||||
faces, msg := manualDepoSearch(rc, fio[0])
|
||||
t.Logf("manualDepoSearch(%s): %d %s — %+v", fio[0], len(faces), msg, first(len(faces), faces))
|
||||
if len(faces) == 0 {
|
||||
|
||||
Reference in New Issue
Block a user