diff --git a/docs/adr/0001-isklyuchenie-postavshchikov.md b/docs/adr/0001-isklyuchenie-postavshchikov.md index 5e38aa8..44bb57b 100644 --- a/docs/adr/0001-isklyuchenie-postavshchikov.md +++ b/docs/adr/0001-isklyuchenie-postavshchikov.md @@ -71,6 +71,20 @@ - Запись офферов и исключённых — в общем модуле для трёх форм, чтобы позже перенести сохранение на бэкенд без переделки компонентов. +## Устройство списков + +Манифесты — `provisioning/manifests/{ct,oid,kps}.provisioning.json`. + +- Колонки — копия «Оценки поставщиков» своей формы (чтобы «Вернуть» восстановило оффер + целиком) плюс `CT` (найти исключённых при открытии СТ) и `reason` (причина). +- Ссылки на обычные списки — Lookup, файл КП — сразу `offerFileId: Number`: лукап на + библиотеку документов не читается через REST. +- Номер строки комплекта — в `Title`, как в «Оценке поставщиков» (`поставщик-позиция-N`): + один формат во всех списках, разбор переиспользуется (`parseOfferItemIndex`). +- Причина повторяется в каждой строке поставщика — осознанная денормализация. Отдельный + список «Исключённые поставщики» дал бы 6 списков вместо 3 ради короткого текста. +- Поставщик без цен — строка без `position`, чтобы колонка не терялась. + ## Последствия - Три новых списка на `/sites/sed` — описать в `provisioning/manifests/{ct,oid,kps}`, diff --git a/provisioning/manifests/ct.provisioning.json b/provisioning/manifests/ct.provisioning.json index a5a3a87..77cbe10 100644 --- a/provisioning/manifests/ct.provisioning.json +++ b/provisioning/manifests/ct.provisioning.json @@ -345,6 +345,97 @@ } ] }, + { + "title": "Исключённые предложения", + "template": "GenericList", + "shared": false, + "columns": [ + { + "internalName": "CT", + "title": "Номер СТ", + "type": "Lookup", + "lookupList": "Сравнительная таблица", + "lookupShowField": "number" + }, + { + "internalName": "supplier", + "title": "Поставщик", + "type": "Lookup", + "lookupList": "Поставщики", + "lookupShowField": "name" + }, + { + "internalName": "reason", + "title": "Причина исключения", + "type": "Note" + }, + { + "internalName": "position", + "title": "Позиция", + "type": "Lookup", + "lookupList": "Позиции СТ", + "lookupShowField": "position" + }, + { + "internalName": "supplierPosition", + "title": "Наименование позиции", + "type": "Text" + }, + { + "internalName": "unit", + "title": "Ед. изм", + "type": "Text" + }, + { + "internalName": "quantity", + "title": "Количество", + "type": "Number", + "decimals": 3 + }, + { + "internalName": "price", + "title": "Цена", + "type": "Number", + "decimals": 2 + }, + { + "internalName": "summa", + "title": "Сумма", + "type": "Number", + "decimals": 2 + }, + { + "internalName": "valuta", + "title": "Валюта", + "type": "Lookup", + "lookupList": "Курс Валют", + "lookupShowField": "code" + }, + { + "internalName": "priceTenge", + "title": "Цена в тенге", + "type": "Number", + "decimals": 2 + }, + { + "internalName": "summaTenge", + "title": "Сумма в тенге", + "type": "Number", + "decimals": 2 + }, + { + "internalName": "offerFileId", + "title": "Id файла КП", + "type": "Number", + "decimals": 0 + }, + { + "internalName": "deliveryDistanceKm", + "title": "Расстояние доставки, км", + "type": "Number" + } + ] + }, { "title": "Поставщики", "template": "GenericList", diff --git a/provisioning/manifests/kps.provisioning.json b/provisioning/manifests/kps.provisioning.json index 04c441f..d85d4db 100644 --- a/provisioning/manifests/kps.provisioning.json +++ b/provisioning/manifests/kps.provisioning.json @@ -386,6 +386,97 @@ "type": "Note" } ] + }, + { + "title": "Исключённые предложения КПС", + "template": "GenericList", + "shared": false, + "columns": [ + { + "internalName": "CT", + "title": "Номер СТ", + "type": "Lookup", + "lookupList": "Сравнительная таблица КПС", + "lookupShowField": "number" + }, + { + "internalName": "supplier", + "title": "Поставщик", + "type": "Lookup", + "lookupList": "Поставщики", + "lookupShowField": "name" + }, + { + "internalName": "reason", + "title": "Причина исключения", + "type": "Note" + }, + { + "internalName": "position", + "title": "Позиция", + "type": "Lookup", + "lookupList": "Позиции СТ КПС", + "lookupShowField": "position" + }, + { + "internalName": "supplierPosition", + "title": "Наименование позиции", + "type": "Text" + }, + { + "internalName": "unit", + "title": "Ед. изм", + "type": "Text" + }, + { + "internalName": "quantity", + "title": "Количество", + "type": "Number", + "decimals": 3 + }, + { + "internalName": "price", + "title": "Цена", + "type": "Number", + "decimals": 2 + }, + { + "internalName": "summa", + "title": "Сумма", + "type": "Number", + "decimals": 2 + }, + { + "internalName": "valuta", + "title": "Валюта", + "type": "Lookup", + "lookupList": "Курс Валют", + "lookupShowField": "code" + }, + { + "internalName": "priceTenge", + "title": "Цена в тенге", + "type": "Number", + "decimals": 2 + }, + { + "internalName": "summaTenge", + "title": "Сумма в тенге", + "type": "Number", + "decimals": 2 + }, + { + "internalName": "offerFileId", + "title": "Id файла КП", + "type": "Number", + "decimals": 0 + }, + { + "internalName": "deliveryDistanceKm", + "title": "Расстояние доставки, км", + "type": "Number" + } + ] } ] } diff --git a/provisioning/manifests/oid.provisioning.json b/provisioning/manifests/oid.provisioning.json index abcab3f..525d6ca 100644 --- a/provisioning/manifests/oid.provisioning.json +++ b/provisioning/manifests/oid.provisioning.json @@ -381,6 +381,73 @@ "type": "Boolean" } ] + }, + { + "title": "Исключённые предложения ОИД", + "template": "GenericList", + "shared": false, + "columns": [ + { + "internalName": "CT", + "title": "Номер СТ", + "type": "Lookup", + "lookupList": "Сравнительная таблица ОИД", + "lookupShowField": "number" + }, + { + "internalName": "supplier", + "title": "Поставщик", + "type": "Lookup", + "lookupList": "Поставщики", + "lookupShowField": "name" + }, + { + "internalName": "reason", + "title": "Причина исключения", + "type": "Note" + }, + { + "internalName": "position", + "title": "Позиция", + "type": "Lookup", + "lookupList": "Позиции СТ ОИД", + "lookupShowField": "position" + }, + { + "internalName": "supplierPosition", + "title": "Наименование позиции", + "type": "Text" + }, + { + "internalName": "unit", + "title": "Ед. изм", + "type": "Text" + }, + { + "internalName": "quantity", + "title": "Количество", + "type": "Number", + "decimals": 3 + }, + { + "internalName": "price", + "title": "Цена", + "type": "Number", + "decimals": 2 + }, + { + "internalName": "summa", + "title": "Сумма", + "type": "Number", + "decimals": 2 + }, + { + "internalName": "offerFileId", + "title": "Id файла КП", + "type": "Number", + "decimals": 0 + } + ] } ] } diff --git a/provisioning/sources.json b/provisioning/sources.json index 7c4f5c5..ee4b67c 100644 --- a/provisioning/sources.json +++ b/provisioning/sources.json @@ -33,6 +33,7 @@ { "title": "Критерии", "template": "GenericList" }, { "title": "Согласование СТ", "template": "GenericList" }, { "title": "Не получены КП", "template": "GenericList" }, + { "title": "Исключённые предложения", "template": "GenericList" }, { "title": "Поставщики", "template": "GenericList" }, { "title": "Курс Валют", "template": "GenericList" }, { "title": "Матрица согласования СТ", "template": "GenericList" }, @@ -53,6 +54,7 @@ { "title": "Критерии ОИД", "template": "GenericList" }, { "title": "Согласование СТ ОИД", "template": "GenericList" }, { "title": "Не получены КП ОИД", "template": "GenericList" }, + { "title": "Исключённые предложения ОИД", "template": "GenericList" }, { "title": "Коммерческие предложения ОИД", "template": "DocumentLibrary" } ] }