Своя организация в настройках (справочник НРД или вручную) вместо зашитого ИНН; ручной ввод: поиск клиента и бумаг в DEPO, одна бумага на поручение

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
zuevav
2026-09-17 19:51:04 +03:00
parent e4de1ab4d8
commit 1d0f904010
17 changed files with 484 additions and 82 deletions
+21 -14
View File
@@ -32,15 +32,14 @@ import (
// Идентификаторы M2M на стороне QUIK (фиксированы инструкцией + наши данные).
const (
quikFirmID = "MC0413600000" // наш код фирмы (таблица Firms, FirmId=2)
quikTypeWithdrawM2M = 100 // InstrTypeID «Вывод ЦБ М2М»
quikTypeDepositM2M = 101 // InstrTypeID «Ввод ЦБ М2М»
quikBaseTypeWithdraw = 9 // базовый Type для вывода (Поставка ЦБ из ДКК)
quikBaseTypeDeposit = 8 // базовый Type для ввода (Получение ЦБ в ДКК)
quikSecWithdraw = "RUROUTM2M" // МНП-инструмент вывода
quikSecDeposit = "RURINM2M" // МНП-инструмент ввода
quikSignFlagDepo = 16 // FLG_DEPO — подпись «Депозитарий»
quikCheckViaAPI = 1 // @CheckType=1 — через QuikAPI (проверка+блокировка)
quikTypeWithdrawM2M = 100 // InstrTypeID «Вывод ЦБ М2М»
quikTypeDepositM2M = 101 // InstrTypeID «Ввод ЦБ М2М»
quikBaseTypeWithdraw = 9 // базовый Type для вывода (Поставка ЦБ из ДКК)
quikBaseTypeDeposit = 8 // базовый Type для ввода (Получение ЦБ в ДКК)
quikSecWithdraw = "RUROUTM2M" // МНП-инструмент вывода
quikSecDeposit = "RURINM2M" // МНП-инструмент ввода
quikSignFlagDepo = 16 // FLG_DEPO — подпись «Депозитарий»
quikCheckViaAPI = 1 // @CheckType=1 — через QuikAPI (проверка+блокировка)
)
// errQuikWritesDisabled — предохранитель: пишущие операции запрещены, пока
@@ -124,8 +123,8 @@ func quikRegisterWithdrawal(ctx context.Context, s QuikMNPSettings, p QuikWithdr
sql.Named("ISIN", p.ISIN),
sql.Named("QtyScale", nullInt(p.QtyScale)),
sql.Named("Account", nullStr(p.Account)),
sql.Named("QuikFirm", quikFirmID),
sql.Named("FirmID", quikFirmID),
sql.Named("QuikFirm", quikFirmID()),
sql.Named("FirmID", quikFirmID()),
sql.Named("CanSplit", 0),
sql.Named("BlockS", p.Quantity),
sql.Named("M2MDepoRecipientINN", nullStr(p.RecipientINN)),
@@ -169,8 +168,8 @@ func quikRegisterDeposit(ctx context.Context, s QuikMNPSettings, clientID, isin,
sql.Named("QuikClassCode", nil),
sql.Named("ISIN", isin),
sql.Named("Account", nullStr(account)),
sql.Named("QuikFirm", quikFirmID),
sql.Named("FirmID", quikFirmID),
sql.Named("QuikFirm", quikFirmID()),
sql.Named("FirmID", quikFirmID()),
sql.Named("CanSplit", 0),
sql.Named("BlockS", qty),
sql.Named("CheckType", quikCheckViaAPI),
@@ -203,7 +202,7 @@ func quikSignWithdrawal(ctx context.Context, s QuikMNPSettings, queryNo float64,
sql.Named("ClientID", nullStr(clientID)),
sql.Named("Volume", nil), // при подписи всегда NULL
sql.Named("IntSecCode", quikSecWithdraw),
sql.Named("FirmID", quikFirmID),
sql.Named("FirmID", quikFirmID()),
sql.Named("SignFlag", quikSignFlagDepo),
sql.Named("CheckType", quikCheckViaAPI),
)
@@ -280,3 +279,11 @@ func nullInt(v int) any {
}
return v
}
// quikFirmID — код фирмы в QUIK (таблица Firms) = код участника нашей организации.
func quikFirmID() string {
if globalRC == nil {
return ""
}
return orgCode(globalRC.Snapshot())
}