АРМА
Етап 1: Складний актив
Загальний опис
Створити новий тип закупівлі (
procurementMethodType) на основі aboveThresholdEU.Налаштувати обмеження конфігурацій. Відключити непотрібну функціональність.
Реалізувати новий тип
valueдля проведення тендеру по розміру винагороди (у відсотках).
Закупівля АРМА (загальна інформація)
Процес відбору управителя складних активів
Різниця між структурами тендеру простого активу та складного активу
Загальний план
API ЦБД
Створити новий тип тендера
Створити новий модуль тендерінгу з новим
procurementMethodType(див. нижче)Налаштувати для нового типу процедури словники standards (див. нижче)
Відключити непотрібну функціональність (див. нижче)
Реалізувати новий тип поля
value(див. нижче)Нова структура поля
value(див. нижче)Робота аукціону з новою структурою поля
value(див. нижче)
Відключити нецінові критерії (див. нижче)
Відключити життєвий цикл (див. нижче)
Заборонити використання
contractTemplateName(див. нижче)Адаптувати логіку роботи milestones (див. нижче)
Повний набір тестів процедури по аналогії з іншими типами процедур
Налаштувати роботу контрактів
Реалізувати роботу з новим типом поля
valueСтворення контракту
Оновлення контракту
Зміни до контракту
Змінити логіку роботи
amountPaidТести для нового типа поля
value
Оновлення документації
Структура нового
valueТуторіал нової процедури
Модуль аукціонів
Додати новий procurementMethodType в модуль аукціонів
ЦБД - Створити новий модуль тендерінгу з новим procurementMethodType
Створити новий модуль тендерінгу з новим procurementMethodType на основі модуля openeu (aboveThresholdEU)
Standards - Налаштувати для нового типу процедури словники
1. Налаштувати конфігурації для створення процедури відповідно до ТЗ
https://github.com/ProzorroUKR/standards/tree/master/data_model/schema/TenderConfig
2. Налаштувати перелік критеріїв
Обов’язкових критеріїв немає тому зробити пустим масивом
https://github.com/ProzorroUKR/standards/tree/master/criteria/rules
Процес відбору управителя складних активів
Різниця між структурами тендеру простого активу та складного активу
Деякі валідації критеріїв можуть потребувати змін в цбд.
3. Налаштувати перелік дозволених типів організацій
Перелік значень для нового типу процедури
[
"authority"
]
Адаптація функціоналу
Процес відбору управителя складних активів
Різниця між структурами тендеру простого активу та складного активу
1. Відключити обов’язковість tender.milestones
Відключити обов’язковість tender.milestones (і відповідно contract.milestones) з типами:
delivery
financing
def validate_milestones(self, data, value):
if tender_created_after(MILESTONES_VALIDATION_FROM):
if value is None or len(value) < 1:
raise ValidationError("Tender should contain at least one milestone")
2. Адаптація award.milestones
Функціональність майлстоунів для нової процедури аналогічна стандартній функціональності майлстоунів за виключенням того що:
alp
dueDateмає бути через 2 робочих дні після спрацюванняприбрати
extensionPeriodз допустимих значень дляaward.milestones.сode
3. Заборонити використання tender.contractTemplateName
Заборонити встановлення значення для поля contractTemplateName на етапі створення тендера.
4. Заборонити використання tender.features
Нецінові критерії не будуть застосовуватися. Заборонити встановлення значення для поля tender.features на етапі створення тендера.
5. Встановити тип tender.awardCriteria
Дозволити тільки ratedCriteria в полі tender.awardCriteria
6. Додатково дозволити замовнику додавати документи
Додавання документів будь якого documentType з існуючого списку відповідно батьківської сутності (tender/award/contract) + документ без вказання documentType:
tender.status=draft>> дозволити додаватиtender.documentstender.status=active.tendering>> дозволити додаватиtender.documentstender.status=active.pre-qualification>> дозволити додаватиtender.documentstender.status=active.qualification>> дозволити додаватиaward.documentstender.status=active.awarded>> дозволити додаватиaward.documentscontract.status=pending/active>> дозволити додаватиcontract.documents
Розробка нової структури поля value
1 фаза:
тендерінг
подання пропозицій
деактивація аукціону (
hasAuction= false)
2 фаза:
аукціон (
hasAuction= true)
3 фаза:
контрактінг
4 фаза:
вартість активу
білінг
Адаптація полів системи для процедури АРМА:
tender.value- deletetender.minimalStep- deletetender.guarantee- leave as istender.lots[].value- new structuretender.lots[].minimalStep- new structuretender.lots[].guarantee- leave as istender.bids[].value- leave as istender.bids[].lotsValues[].value- new structuretender.bids[].items[].unit.value- leave as istender.items[].unit.value- leave as istender.awards[].value- new structuretender.awards[].items[].value- leave as iscontract.value- new structure
Структура
Інша назва поля по аналогії з esco.
Прибрати поля
currency,valueAddedTaxIncluded.
{
"value": {
"amountPercentage": 30.5
}
}
Валідації
Валідації для
tender.lots[].value:
tender.lots[].value.amountPercentage>= 0tender.lots[].value.amountPercentage<= 100
Валідації для
tender.lots[].minimalStep:
tender.lots[].minimalStep.amountPercentage>= 0tender.lots[].minimalStep.amountPercentage<=tender.lots[].value.amountPercentage
Валідації для
tender.bids[].lotValues[].value:
tender.bids[].lotValues[].value.amountPercentage>= 0tender.bids[].lotValues[].value.amountPercentage<=tender.lots[].value.amountPercentage(tender.lots[].value.amountPercentage- верхній поріг в ставках)
Валідації для
contract.value:
contract.value.amountPercentage>= 0contract.value.amountPercentage<=tender.awards[].value.amountPercentage
Перевірити/адаптувати всі інші валідації що використовували поля:
value.amountvalue.amountNetvalue.currencyvalue.valueAddedTaxIncluded
Авардінг
Реалізувати визначення переможної пропозиції за полем tender.awards[].value.amountPercentage
awarding_criteria_key: str = "amountPercentage"
Аномально низька ціна (ALP)
Налаштувати розрахунок аномально низької ціни за полем tender.awards.value.amountPercentage використовуючи значення awarding_criteria_key:
Розрахунок weightedValue
Поле weightedValue створюється на основі поля value якщо в тендері використовується неціновий критерій або життєвий цикл.
Оскільки нецінові критерії та життєвий цикл не будуть застосовуватися, поле weightedValue не буде створюватися.
Але пропонується адаптувати його роботу за полем tender.awards.value.amountPercentage використовуючи значення awarding_criteria_key, на випадок якщо вищеописана функціональність буде застосована в майбутньому.
Тобто для value:
{
"value": {
"amountPercentage": 30.5
}
}
Генерувати (якщо вимагається умовами проведення тендера що описані вище) weightedValue:
{
"weightedValue": {
"amountPercentage": 30.5,
"addition": 0.0,
"denominator": 1
}
}
Аукціон
Реалізувати двусторонню конвертацію value (а також weightedValue за наявності) з старого формату в новий і в зворотньому напрямку.
Етап імпорту тендеру датабріджом аукціонів
ЦБД розуміючи що запит від модуля аукціону у відповіді переформатовує всі value. Використовуючи поле currency для позначення відсотків.
Наприклад (weightedValue теж переводити)
{
"value": {
"amountPercentage": 30.5
}
}
Конвертувати в:
{
"value": {
"amount": 30.5,
"currency": "%"
}
}
Етап звітування аукціоном про результати
В ендпоінті ЦБД для аукціону робити зворотню конвертацію
Етап 2: Простий актив
Загальний опис
Створити новий тип відбору (frameworkType) та його похідних на основі requirementsForProposal. Налаштувати обмеження конфігурацій. Відключити непотрібну функціональність.
Створити новий тип закупівлі (procurementMethodType) на основі процедури складних активів. Налаштувати обмеження конфігурацій. Відключити непотрібну функціональність. Реалізувати новий тип value для проведення тендеру по розміру винагороди (у відсотках).
Закупівля АРМА (загальна інформація)
Процес відбору управителя простих активів
Різниця між структурами тендеру простого активу та складного активу
Загальний план
TBD
Етап 3: Білінг
Загальний опис
Реалізувати нову логіку білінгу.
Етап 4: Інтеграції
Інтеграції не передбачені в першій ітерації, але необхідно переконатися що вони не вимагають поля value.currency або value.amount в стандартному форматі або адаптувати їх роботу для нового типу value.
Потенційно необхідні інтеграції:
ЄДР
ДФС
НАЗК