From 634244ee282c448d379b55243fcf1938d2fc7a37 Mon Sep 17 00:00:00 2001 From: zuevav Date: Thu, 17 Sep 2026 19:59:08 +0300 Subject: [PATCH] =?UTF-8?q?DEPO:=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=BE?= =?UTF-8?q?=D0=BD=D0=BD=D0=B0=D1=8F=20=D0=BA=D0=B0=D1=80=D1=82=D0=BE=D1=87?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BB=D0=B8=D1=86=D0=B0=20=E2=80=94=20=D1=81?= =?UTF-8?q?=D1=87=D0=B5=D1=82=D0=B0=20=D0=BF=D0=BE=20SELF=5FID=20(=D0=BF?= =?UTF-8?q?=D0=BE=D0=B8=D1=81=D0=BA=20=D0=B2=20=D1=80=D1=83=D1=87=D0=BD?= =?UTF-8?q?=D0=BE=D0=BC=20=D0=B2=D0=B2=D0=BE=D0=B4=D0=B5=20=D0=B8=20=D1=81?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BA=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 (1M context) --- internal/lkgateway/depo_check.go | 5 ++++- internal/lkgateway/manual_depo.go | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/internal/lkgateway/depo_check.go b/internal/lkgateway/depo_check.go index 61e0bfe..2918f6e 100644 --- a/internal/lkgateway/depo_check.go +++ b/internal/lkgateway/depo_check.go @@ -111,7 +111,10 @@ func depoResolveParty(ctx context.Context, db *sql.DB, fs FancyMSSQLSettings, se num = strings.TrimSpace(num) if ser != "" && num != "" { e := db.QueryRowContext(ctx, - `SELECT TOP 1 ID, ISNULL(NAME,''), DATE_BIRTH FROM OD_FACES WHERE REPLACE(ISNULL(DOC_SER,''),' ','')=@p1 AND DOC_NUM=@p2`, + // Карточка лица в DEPO версионная: действующая версия (LAST_FLAG=1) даёт ФИО и дату рождения, + // а счета и опции привязаны к исходной записи (SELF_ID). + `SELECT TOP 1 ISNULL(NULLIF(SELF_ID,0),ID), ISNULL(NAME,''), DATE_BIRTH FROM OD_FACES WHERE REPLACE(ISNULL(DOC_SER,''),' ','')=@p1 AND DOC_NUM=@p2 + ORDER BY ISNULL(LAST_FLAG,0) DESC, ID DESC`, sql.Named("p1", ser), sql.Named("p2", num)).Scan(&p.faceID, &p.faceName, &p.birth) p.faceOK = e == nil } diff --git a/internal/lkgateway/manual_depo.go b/internal/lkgateway/manual_depo.go index a38a02e..5359c7b 100644 --- a/internal/lkgateway/manual_depo.go +++ b/internal/lkgateway/manual_depo.go @@ -68,11 +68,12 @@ func manualDepoSearch(rc *RuntimeConfig, q string) ([]manualDepoFace, string) { defer cancel() defer db.Close() digits := strings.ReplaceAll(q, " ", "") - rows, err := db.QueryContext(ctx, `SELECT TOP 20 f.ID, ISNULL(f.NAME,''), f.DATE_BIRTH, ISNULL(f.DOC_TYPE,0), ISNULL(f.DOC_SER,''), ISNULL(f.DOC_NUM,''), + // Действующая версия карточки (LAST_FLAG=1); счета привязаны к исходной записи (SELF_ID). + rows, err := db.QueryContext(ctx, `SELECT TOP 20 ISNULL(NULLIF(f.SELF_ID,0),f.ID), ISNULL(f.NAME,''), f.DATE_BIRTH, ISNULL(f.DOC_TYPE,0), ISNULL(f.DOC_SER,''), ISNULL(f.DOC_NUM,''), f.DOC_DAT, ISNULL(f.DOC_PLACE,''), ISNULL(f.DOC_CODE,''), ISNULL(f.PHONE,'') FROM OD_FACES f WHERE ISNULL(f.LAST_FLAG,1)=1 AND (UPPER(f.NAME) LIKE UPPER(@q) OR f.DOC_NUM=@d OR REPLACE(ISNULL(f.DOC_SER,''),' ','')+f.DOC_NUM=@d) - AND EXISTS (SELECT 1 FROM OD_CLIENTS c WHERE c.FACE=f.ID AND c.NUMBER LIKE N'ВТНКЦ%' AND c.STATE=0 AND c.D_CLOSE IS NULL) + AND EXISTS (SELECT 1 FROM OD_CLIENTS c WHERE c.FACE=ISNULL(NULLIF(f.SELF_ID,0),f.ID) AND c.NUMBER LIKE N'ВТНКЦ%' AND c.STATE=0 AND c.D_CLOSE IS NULL) ORDER BY f.NAME`, sql.Named("q", q+"%"), sql.Named("d", digits)) if err != nil { return nil, "поиск в DEPO: " + err.Error()