Bind Nova Poshta API key to cash register (#3)

Each cash register stores its own encrypted NP API key. Status polling uses
register keys and binds an order to the register whose key sees the TTN as
its own (PhoneSender present); ETTN receipts are created from that register.
Migration 0008 moves the old NOVA_POSHTA_API_KEY into the default register.

Closes #3

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-25 13:02:40 +03:00
co-authored by Claude Opus 5.5
parent 2b92d82693
commit 8b3c2b6d63
22 changed files with 531 additions and 73 deletions
@@ -5,6 +5,8 @@ export interface CashRegister {
name: string
fiscal_number: string | null
license_key_masked: string
/** null — ключ Новой Почты не задан: касса не получает посылки. */
np_api_key_masked: string | null
tax_codes: (number | string)[]
is_active: boolean
is_default: boolean
@@ -15,6 +17,7 @@ export interface CashRegisterCreate {
fiscal_number: string | null
license_key: string
pin_code: string
np_api_key: string | null
tax_codes: (number | string)[]
is_default: boolean
}