feat(localization): убрать «ИНН» из UI — РК использует ИИН/БИН
ИНН — российское поле. В Казахстане физлица используют ИИН (12 цифр), юрлица — БИН (12 цифр). Колонок «inn» в БД у нас нет (есть Bin для юрлица + TaxNumber для ИИН физлица), миграция drop column не нужна — только лейблы и комментарии. Поправлено: - EmployeesPage: «ИИН/ИНН» → «ИИН» (12 цифр, inputMode=numeric). - CounterpartiesPage: убрано поле «ИНН / другой» — оставлены БИН и ИИН с правильными ограничениями (12 цифр, numeric). - SuperAdminOrgCreatePage / SuperAdminSetupPage: «БИН/ИНН» → «БИН». - MoySkladImportPage: «(ИНН ...)» в ответе test → «(идентификатор ...)». - Domain comments в Employee.cs / Counterparty.cs обновлены. Внутренний MoySklad-DTO `Inn` оставлен — это входящий JSON из российского API МойСклад, поле там действительно так называется. Маппится в Bin при импорте контрагента (как и было).
This commit is contained in:
parent
c6ece2adea
commit
dcb28a9811
|
|
@ -21,7 +21,7 @@ public class Employee : TenantEntity
|
|||
|
||||
/// <summary>Оклад в валюте организации, опц.</summary>
|
||||
public decimal? Salary { get; set; }
|
||||
/// <summary>ИИН/ИНН (12-14 символов), опц.</summary>
|
||||
/// <summary>ИИН (12 цифр для физлица в РК), опционально.</summary>
|
||||
public string? TaxNumber { get; set; }
|
||||
/// <summary>Произвольное описание (комментарий HR'а).</summary>
|
||||
public string? Description { get; set; }
|
||||
|
|
|
|||
|
|
@ -143,13 +143,10 @@ export function CounterpartiesPage() {
|
|||
</Select>
|
||||
</Field>
|
||||
<Field label="БИН (юрлицо РК)">
|
||||
<TextInput value={form.bin} onChange={(e) => setForm({ ...form, bin: e.target.value })} />
|
||||
<TextInput value={form.bin} onChange={(e) => setForm({ ...form, bin: e.target.value })} placeholder="12 цифр" maxLength={12} inputMode="numeric" />
|
||||
</Field>
|
||||
<Field label="ИИН (физлицо РК)">
|
||||
<TextInput value={form.iin} onChange={(e) => setForm({ ...form, iin: e.target.value })} />
|
||||
</Field>
|
||||
<Field label="ИНН / другой">
|
||||
<TextInput value={form.taxNumber} onChange={(e) => setForm({ ...form, taxNumber: e.target.value })} />
|
||||
<TextInput value={form.iin} onChange={(e) => setForm({ ...form, iin: e.target.value })} placeholder="12 цифр" maxLength={12} inputMode="numeric" />
|
||||
</Field>
|
||||
<Field label="Страна">
|
||||
<Select value={form.countryId} onChange={(e) => setForm({ ...form, countryId: e.target.value })}>
|
||||
|
|
|
|||
|
|
@ -298,8 +298,8 @@ export function EmployeesPage() {
|
|||
<Field label="Оклад">
|
||||
<TextInput type="number" value={form.salary} onChange={(e) => setForm({ ...form, salary: e.target.value })} placeholder="—" />
|
||||
</Field>
|
||||
<Field label="ИИН/ИНН">
|
||||
<TextInput value={form.taxNumber} onChange={(e) => setForm({ ...form, taxNumber: e.target.value })} placeholder="12-14 цифр" maxLength={20} />
|
||||
<Field label="ИИН">
|
||||
<TextInput value={form.taxNumber} onChange={(e) => setForm({ ...form, taxNumber: e.target.value })} placeholder="12 цифр" maxLength={12} inputMode="numeric" />
|
||||
</Field>
|
||||
</div>
|
||||
<Field label="Описание / комментарий">
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ export function MoySkladImportPage() {
|
|||
{test.data && (
|
||||
<div className="text-sm text-emerald-700 dark:text-emerald-400 flex items-center gap-1.5">
|
||||
<CheckCircle className="w-4 h-4" /> Подключено: <strong>{test.data.organization}</strong>
|
||||
{test.data.inn && <span className="text-slate-500">(ИНН {test.data.inn})</span>}
|
||||
{test.data.inn && <span className="text-slate-500">(идентификатор {test.data.inn})</span>}
|
||||
</div>
|
||||
)}
|
||||
{test.error && <div className="text-sm text-red-600">{formatError(test.error)}</div>}
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ export function SuperAdminOrgCreatePage() {
|
|||
</Field>
|
||||
</div>
|
||||
<div className="grid grid-cols-2 gap-3">
|
||||
<Field label="БИН/ИНН"><TextInput value={bin} onChange={(e) => setBin(e.target.value)} /></Field>
|
||||
<Field label="БИН"><TextInput value={bin} onChange={(e) => setBin(e.target.value)} placeholder="12 цифр" maxLength={12} inputMode="numeric" /></Field>
|
||||
<Field label="Телефон"><PhoneInput value={phone} onChange={setPhone} /></Field>
|
||||
</div>
|
||||
<Field label="Адрес"><TextInput value={address} onChange={(e) => setAddress(e.target.value)} /></Field>
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ export function SuperAdminSetupPage() {
|
|||
</Field>
|
||||
</div>
|
||||
<div className="grid grid-cols-2 gap-3">
|
||||
<Field label="БИН/ИНН"><TextInput value={bin} onChange={(e) => setBin(e.target.value)} /></Field>
|
||||
<Field label="БИН"><TextInput value={bin} onChange={(e) => setBin(e.target.value)} placeholder="12 цифр" maxLength={12} inputMode="numeric" /></Field>
|
||||
<Field label="Телефон"><TextInput value={phone} onChange={(e) => setPhone(e.target.value)} /></Field>
|
||||
</div>
|
||||
<div className="flex gap-2">
|
||||
|
|
|
|||
Loading…
Reference in a new issue