You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 31 Next »

Посилання:

Мета створення процедури та нормативні засади

Відповідно до Постанови від 27 грудня 2019 р. № 1175 КМУ "Про запровадження конкурентних умов стимулювання виробництва електричної енергії з альтернативних джерел енергії".

Визначається механізм процедури підготовки та проведення аукціону з розподілу квоти підтримки для стимулювання виробників електричної енергії з альтернативних джерел енергії з використанням електронної торгової системи, порядок функціонування електронної торгової системи та визначення переможця за результатами проведення аукціону, порядок укладення та публікації договору купівлі-продажу в електронній торговій системі, розмір та порядок сплати винагороди операторам авторизованих електронних майданчиків та інші питання проведення аукціонів.

З метою проведення аукціонів з розподілу квот підтримки для електричної енергії з альтернативних джерел енергії в межах системи ProZorro.Sale реалізовано sellingMethod: timber-multiAwards. Така процедура надає змогу Замовнику здійснити продаж квот підтримки для електричної енергії, в рамках аукціону, необмеженій кількості учасників, а учаснику придбати частину заявленої квоти підтримки для електричної енергії у лоті Замовником, саме ту кількість обсягу, що потрібна учаснику.

Загальна інформація про роботу процедури

Критерієм вибору переможця є цінова пропозиція, що складається з ціни за 1 кВт*годину та обсяг генерації у кВт, за умови відповідності пропозиції учасника кваліфікаційним критеріям, визначеним Замовником аукціону.

Кваліфікація відбувається після завершення аукціону, попередньої кваліфікації немає.

За наявності 2-х та більше заяв на участь за результатами періоду подання пропозицій (tenderPeriod), процедура переходить у період аукціону (auctionPeriod). У протилежному випадку аукціон визнається таким, що не відбувся. Статус аукціону автоматично змінюється на unsuccessful.

За результатами аукціону пропозиції учасників сортуються по ціні та кваліфікуються ті учасники, яким вистачило запропонованого Замовником аукціону обсягу квоти. У випадку дискваліфікації одного з учасників, кваліфікація переходить до наступного учасника в черзі.

Особливості процедури

  1. На етапі публікації Процедури:
    • В одній процедурі може бути тільки один item (ДОДАТИ ВАЛІДАЦІЮ)
  2. На етапі подання заяв на участь:
    • учасник може подати одну або більше заяв на участь в одному аукціоні, відповідно до кількості об'єктів електроенергетики наявних у нього.
  3. Аукціон:
    • для запуску МА на момент tenderPeriod.endDate має бути мінімум два bids[] у статусі active (minNumberOfQualifiedBids==2). Якщо менше двух статус процедури змінюється на unsuccessful
    • "сліпий" аукціон (детально описано в ТЗ "сліпого" МА) (ДОДАТИ ПОСИЛАННЯ)
  4. Кваліфікація:
    • кількість переможців необмежена
    • наявність учасників, що очікують
    • наявність умовного переможця

Опис класифікаторів

  • Під час публікації процедури ЦБД автоматично генерує значення для (ДОДАТИ ЦЕ В ФУНКЦІОНАЛ)

    • itmes[0].classification.scheme == CAV

    • itmes[0].classification.id == 09300000-2

Основний класифікатор (код) - 09300000-2 - Електрична, теплова, сонячна та атомна енергія. Посиланняна словник

  • При публікації процедури, Організатор може вказати (не обовʼязково) Додатковий класифікатор "Вид джерела енергії" (одне значення з словника)

Посилання на legalName endpoint

legalName endpoint (ЗАМІНИТИ + ПРОВАЛІДУВАТИ)

Timeline процедури

Періоди процедури

Технічна назваБізнесова назваДата початкуДата завершенняРезультат завершенняКоментар
rectificationPeriodПеріод редагування

Дата та час публікації процедури в ЦБД

rectificationPeriod.startDate + 2 р.д., завершення о 20:00

(завжди припадає на робочий день)

Статус процедури змінюється:

active_rectification → active_tendering

Редагування полів процедури більше недоступне

ст.28 "Прийом заяв про участь в аукціоні починається з моменту розміщення оголошення про проведення аукціону..."
tenderPeriodПеріод подання пропозицій

tenderPeriod.startDate == rectificationPeriod.endDate

о 20:00 в день, що передує дню початку аукціону auctionPeriod.startDate

(може припадати на НЕробочий день)

Статус процедури змінюється:

active_tendering → active_auction


questionPeriodПеріод запитань

Дата та час публікації процедури в ЦБД

Може припадати на НЕробочий день.

о 20:00 за 1 р.д. до початку аукціону

-
enquiryPeriodПеріод відповідей

Дата та час публікації процедури в ЦБД

о 20:00 за 1 р.д. до початку аукціону-
auctionPeriodАукціон

Завжди припадає на робочий день.

Вказується організатором при публікації процедури.

ЦБД приймає тільки auctionPeriod.startDate >= datePublished + 30 к.д. 

Момент завершення роботи модуля аукціону

Статус процедури змінюється:

active_auction → qualification

Період auctionPeriod присутній виключно за умови наявності не менш ніж 2 заяв на участь (bids[].status: active) в період подання пропозицій (tenderPeriod)
verificationPeriodПеріод перевірки документів

verificationPeriod.startDate == auctionPeriod.endDate

verificationPeriod.endDate == verificationPeriod.startDate + 10 р.д. о 18:00

Статус процедури змінюється:

qualification → active_qualification

УТОЧНИТИ

+ Ручна дія. Організатор натискає кнопку "Перевірку документів завершено", на ЦБД надсилається запит на зміну статуса Процедури. verificationPeriod.endDate не змінюється в API

qualificationPeriodПеріод кваліфікаціїqualificationPeriod.startDate == auctionPeriod.endDatequalificationPeriod.endDate == qualificationPeriod.startDate + 29 р.д. о 18:00

На рівні ЦБД: відсутній

На рівні майданчика: за 24 години до завершення, надсилання повідомлення Організатору про завершення періоду кваліфікації. 

зараз має назву waitingPeriod


Статуси процедури


Технічна назваБізнесова назваПерехід зЗа умовиКоментар
active_rectificationРедагування доступнемомент публікації оголошення в ЦБДРучна дія. Заповнені всі обовʼязкові поля для створення процедури в ЦБДМайданчик Організатора робить запит до ЦБД та передає об'єкт процедури. У разі правильно сформованого об'єкта процедури, ЦБД повертає майданчику token створеного об'єкта процедури, процедура набуває статус "Редагування доступне" (active_rectification).
active_tenderingПрийняття заяв на участьactive_rectificationАвтоматично. Настав момент rectificationPeriod.endDateЗавершився Період редагування (rectificationPeriod), почався період Прийняття заяв на участь (tenderPeriod)
active_auctionАукціонactive_tenderingАвтоматично. Завершився період прийому заяв на участь. В момент auctionPeriod.startDate

У визначену дату та час ЦБД, за наявності необхідної кількості заяв (перевірка кількості поданих заяв відбувається на рівні ЦБД, для проведення аукціону необхідно не менше 2 заяв на участь), змінює статус процедури з “Прийняття заяв на участь” (active_tendering) на “Аукціон” (active_auction).

qualificationПеревірка документів учасниківactive_auctionАвтоматично. Завершився auctionPeriod

по кожному учаснику, що мав bids[].status == active на момент auctionPeriod.startDate, в обʼєкті процедури створюється Award у статусі verification

За умови успішної превірки документів, Організатор змінює статус Awards[].status: verification → waiting (обовʼязкових документів немає)

За умови НЕ успішної перевірки документів, Організатор змінює статус Awards[].status: verification → unsuccessful (обовʼязково документ awards.documents: documentType: rejectionProtocol)

active_qualificationОчікується оприлюднення протоколу та підписання договоруqualification

Автоматично. Завершився verificationPeriod, що тривав 10 р.д


УТОЧНИТИ

+ Ручна дія. Організатор натискає кнопку "Перевірку документів завершено", на ЦБД надсилається запит на зміну статуса Процедури.

verificationPeriod.endDate не змінюється в API. 

Всі Awards, що знаходяться у статусі verification набувають статусу waiting

Аварди, що на момент зміни статуса процедури перебували у статусі waiting АБО verification автоматично змінюють статус на pending АБО pending_waiting (деталі в розділі Статуси Awards). Awards[].status: [waiting,verification] → pending OR pending_waiting

Аварди в статусі unsuccessful свій статус не змінюють.

В момент переходу процедури у статус active_qualification, ЦБД розраховує значення поля x_quantityLimit - це сума awards.quantity всіх Авардів, які на момент зміни статуса процедури на active_qualification мали Awards.status == waiting

completeАукціон завершеноactive_qualificationРучна дія. Присутній хоча б один Contract у статусі active

Термінальний статус.

Після завершення роботи із договором, Організатор аукціону натискає на кнопку “Завершити аукціон”.  зміни статусу процедури на “Аукціон завершено”.

unsuccessfulАукціон не відбувся

active_tendering

qualification

active_qualification

Автоматично.

  • Якщо на момент tenderPeriod.endDate подано менше 2-х заяв на участь;
  • Якщо в рамках кваліфікації Замовник дискваліфікував усіх учасників.

Термінальний статус.

cancelledАукціон скасовано

active_rectification

active_tendering

qualification

active_qualification

Ручна дія.

Організатору у всіх статусах Процедури, окрім procedure.status: active_auction, доступна опція "Скасування" Процедури.

Для скасування процедури, Організатору необхідно:

  • Завантажити документ в cancellations[].documents з documentType: cancellationDetails
  • Вказати причину скасування (cancellations.reason) довільним текстом
  • Вказати дату прийняття рішення про скасування (cancellations.datePublished)

Після цього, при натисканні кнопки, надсилається запит на скасування. Статус процедури автоматично змінюється → cancelled

Термінальний статус.

Для зміни статусу процедури на “Аукціон відмінено” Замовник зобов’язаний в особистому кабінеті натиснути кнопку “Скасувати аукціон”, завантажити документ з причинами скасування та обрати одну з нижчезазначених причин скасування, після чого майданчик Замовника передає запит до ЦБД на зміну статусу процедури на “Аукціон відмінено”.


Типи і опис документів

Документи процедури

documentTypeНазва УкрНазва АнгОпис

Обовʼязковіть для публікації процедури

Публічність
illustrationІлюстраціїIllustrationЗображення, що можуть додаватися Організатором до процедуриНіТак
technicalSpecificationsТехнічні специфікаціїTechnical specificationsТехнічні параметри об’єкта електроенергетикиТакТак
evaluationCriteriaКваліфікаційні вимогиEvaluation criteriaПерелік документів, необхідних для участі в аукціоні, та вимоги до їх оформленняТакТак
contractProformaТипова форма договору про надання послугиContract proformaТипова форма договору про надання послугиТакТак
x_lotInfoENДокумент, що містить оголошення англійською мовоюAnnouncements in EnglishДокумент, що містить оголошення англійською мовоюТакТак
x_verificationActАкт про результати перевірки документів учасниківVerification actЗагальний акт про результати перевірки документів усіх учасників, в якому зазначається перелік учасників, що успішно пройшли перевірку, і тих, що втратили статус учасника

Ні *

* має бути можливість завантажити документ коли procedure.status: qualification або active_qualification

"гарантований покупець складає та оприлюднює загальний акт про результати перевірки документів усіх учасників, в якому зазначає перелік учасників, що успішно пройшли перевірку, і тих, що втратили статус учасника"


Так
clarificationsПогодження змін до опису лоту. Опис причин редагування.Clarifications

Документ НЕ обовʼязковий при публікації процедури.

Документ НЕ обовʼязковий для редагування процедури.

Ні

Так
digitalSignatureЦифровий підписDigital signatureЦифровий підписНіТак

Документи скасування процедури (cancellations.documents)

documentTypeНазва УкрНазва АнгОпис

Обовʼязковіть для скасування процедури

Публічність
cancellationDetailsПричини скасуванняCancellation detailsІнформація щодо причин скасування аукціонуТакТак
digitalSignatureЦифровий підписDigital signatureЦифровий підписНіТак

Документи заяви на участь (bids.documents)

documentTypeНазва УкрНазва АнгОпис

Обовʼязковіть для скасування процедури

Публічність
x_guaranteeФінансове забезпеченняFinancial supportБанківська гарантія для участі в аукціоні, надана на користь гарантованого покупцяТакТак
х_ultimateBeneficiaryInfoІнформація про кінцевого бенефіціарного власникаUltimate beneficiary informationІнформація про кінцевого бенефіціарного власника. У разі коли особа не має кінцевого бенефіціарного власника, зазначається інформація про відсутність кінцевого бенефіціарного власника та причина його відсутностіТакТак
 x_governingBodyInfoІнформація про органи управлінняGoverning bodies informationКопії документів, що містять інформацію про органи управління учасника, який має намір взяти участь в аукціоні, та їх персональний склад (статут, протоколи, накази, інші документи, що містять інформацію про органи управління та їх персональний склад)НіТак
 x_relatedPartiesІнформація про пов'язаних осібRelated parties informationІнформацію про осіб, пов’язаних із учасником, який має намір взяти участь в аукціоні, відносинами щодо здійснення контролюНіТак
 x_generationTypeДовідка із зазначенням виду альтернативного джерела енергіїGeneration type certificate У разі участі в технологічно нейтральному аукціоніНіТак
eligibilityDocumentsІнформація щодо технічних параметрів (характеристик) установки Eligibility documentІнформація щодо технічних параметрів (характеристик) установки зберігання енергії (встановлена потужність, ємність, інші параметри)НіТак
digitalSignatureЦифровий підписDigital signatureЦифровий підписНіТак

Документи обʼєкта кваліфікації (awards.documents)

documentTypeНазва УкрНазва АнгОпис

Обовʼязковіть

Публічність
rejectionProtocolАкт про невідповідністьRejection protocol

Завантажується для кожного Аварда, який не пройшов перевірку документів протягом verificationPeriod

Поле terminationReason в даному випадку заповнювати не обовʼязково

Так

Для зміни awards.status: verification → unsuccessful

Так
auctionProtocolПротокол аукціонуAuction protocol

Протокол підписується і завантажується для кожного учасника окремо

"Гарантований покупець протягом двох робочих днів з дати оприлюднення протоколу про результати аукціону підписує протоколи про результати аукціону щодо кожного переможця"


Так

Для зміни awards.status: pending → active


Так
actАкт про відмовуRefusal act

Завантажується у разі відмови Переможцем підписувати протокол.

Документ має бути можливість завантажити у Організатора та у Переможця.

Для того, щоб Організатор дискваліфікував учасника, Авард якого перебуває у статусі pending, має бути завантажено хоча б один документ з documentType: act 
В поле terminationReason аварду записується причина із довідника

Поле terminationReason має бути обовєязково заповнено для зміни awards.status: pending → unsuccessful

Так

Для зміни awards.status: pending → unsuccessful



x_guaranteeФінансове забезпеченняFinancial support

Банківська гарантія для участі в аукціоні, надана на користь гарантованого покупця.

При підписанні протоколу може виникнути потреба в завантаженні оновленої банківської гарантії.

НіТак
digitalSignatureЦифровий підписDigital signatureЦифровий підписНіТак


Кваліфікація

Періоди Awards

Технічна назваБізнесова назваДата початкуДата завершенняРезультат завершенняКоментар
awards.signingPeriodПеріод підписання протоколу та договору

verificationPeriod.endDate

signingPeriod.endDate == signingPeriod.startDate + 15 р.д.На рівні ЦБД: відсутній

Період формується в Аварді з моменту набуття Авардом статусу pending

Якщо Авард був у статусі pending і отримав signingPeriod, то після зміни статуса на інший (active OR unsuccessful) період залишається в endpoint

Аварди в інших статусах цей період не отримують.


awards.admissionPeriodПеріод прийняття рішення щодо набуття статусу переможця

qualificationPeriod.endDate

admissionPeriod.endDate == admissionPeriod.startDate + 5 р.д.На рівні ЦБД: відсутнійПеріод формується для Авардів у статусі pending_admission

Статуси Awards

Технічна назваБізнесова назваПерехід зЗа умовиКоментар
verificationПеревірка документівМомент auctionPeriod.endDate створюються Awards

Автоматично. 

По завершенню аукціону, процедура переходить у статус qualification (Перевірка документів). ЦБД генерує Awards[] у статусі verification для всіх учасників, відповідно до поданих кількості заяв на участь. Валідною ставкою вважається та, що рівна або менша за значення value.amount.

За результатами роботи МА (auctionPeriod) пропозиції сортуються від меншої ціни до більшої, а у випадку співпадіння ціни, вище відображається пропозиція розміщена раніше.

Часом розміщення пропозиції вважається час першого розміщення заяви у ЦБД, а, у випадку редагування пропозиції під час періоду прийому пропозицій, час фіксації змін у заяві у ЦБД.

При формуванні порядку Авардів, необхідно дивитись на Awards.value, але якщо value декількох Авардів однакове, необхідно подивитись, чи відрізняється у кожного bid-а bids.initialValue від bids.value:

1) Якщо учасник оновлював свою ставку протягом МА (bids.value < bids.initialValue), то часом розміщення ставки вважається час оновлення ставки протягом МА

2) Якщо учасник НЕ оновлював свою ставку протягом МА (bids.value == bids.initialValue), то часом розміщення ставки вважається bids.dateModified

3) Якщо у декількох Авардів однакове value і ці декілька учасників оновлювали свої ставки протягом МА, то вище в рейтингу має бути той, хто оновлював свою ставку раніше 

4) Якщо у декількох Авардів однакове value при цьому один із них НЕ оновлював ставку протягом МА, а інші оновлювали, то вище в рейтингу має бути той, хто НЕ оновлював ставку протягом МА. (бо він розмістив своє value раніше). Його bids.dateModified вважається датою і часом розміщення ставки. Інші учасники своє value розмістили точно пізніше, бо вони оновлювали value протягом МА. Їх порядок має бути згідно часу оновлення їх ставок.


Організатор має можливість завантажити та заміни в Аварді документ documentType:rejectionProtocol (лише після цього ЦБД дає можливість змінити Awards.status: verification → unsuccessful )

Організатор має можливість завантажити та заміни в Процедурі документ documentType:x_verificationAct

waitingДокументи перевіреноverification

Ручна дія.

У Організатора має бути можливість змінювати Awards.status: verification → waiting. Обовʼязкові документи для цієї зміни статуса відсутні.


Автоматично.

Якщо на момент verificationPeriod.endDate залишились Awards у статусі verification, то ЦБД змінює їх статус на waiting

 Подальша робота з Авардом відбувається із цього статуса. 

Частину Авардів в статус waiting може перевести Організатор, а e випадку, коли ЦБД автоматично змінила Awards.status: verification → waiting , він є проміжковим і після цього ЦБД також автоматично змінить статус на pending або pending_waiting


pending Очікується протокол

waiting

АБО

pending_waiting

АБО

pending_admission

Автоматично.

waiting → pending: Завершився verificationPeriod.endDate

АБО

Автоматично.

pending_waiting → pending: Дискваліфіковано Авард у статусі pending

АБО

Ручна дія.

pending_admission → pending: Учасник погодився закрити залишок обсягу


Перехід із waiting:

Статус pending отримують Аварди, які перебувають перші у списку результатів Модуля Аукціону і які успішно пройшли етап перевірки документів (award.status <> unsuccessful) за умови, що обсяг, який вони запропонували повністю покривається розрахованим значенням x_quantityLimit

Організатор має можливість:

    • Завантажити і замінити awards.document: documentType: auctionProtocol (обов'язкова дія для подальшої зміни статуса Аварда на active)
    • Змінити Awards.status: pending → active
    • Змінити Awards.status: pending → unsuccessful

Учасник має можливість завантажити та замінити протокол auctionProtocol (не обов'язкова дія)


Перехід із pending_waiting:

Лише у випадку, якщо Організатор дискваліфікував одного чи більше Переможців, Аварди, що перебувають у статусі pending_waiting автоматино можуть змінити свій статус на pending за умови, що обсяг, який вони запропонували повністю покривається залишком від обсягу, що залишився.

Приклад1:

Організатор вказав procedure.items.quantity == 10 000

Учасник_1 запропонував awards.items.quantit  == 3 000 по найменшій ціні 10

Учасник_2 запропонував awards.items.quantit  ==  1 000 по ціні 11

Учасник_3 запропонував awards.items.quantit  ==  2 000 по ціні 12

Всі три учасники успішно пройшли перевірку документів (awards.status == waiting)

ЦБД розраховує x_quantityLimit == (3000 + 1 000 + 2 000) * 0.8 == 4 800

Обсяг 4 800 повністю покриває тільки запропоновані обсяги Учасника_1 і Учасника_2. Запропонований Учасником_3 обсяг повнітю не реалізується (він запропонував 2 000, а після розподілення між першим і другим учасниками, залишилось не розподілено тільки (4 800 - 3 000 - 1 000) == 800 )

В даному прикладі тільки третій учасник отримує статус pending_waiting

Після цього Організатор дискваліфіковує Учасника_1 з його пропозицією 3 000.

Учасник_3 автоматично отримує статус pending з своєю пропозицією 2 000, бо 2 000 повністю покривається обсягом 4 800 (першого дискваліфікували, другий 1 000, третій 2 000, 1000+2000 = 3000, що менше, ніж 4800)

Приклад2:

Організатор вказав procedure.items.quantity == 10 000

Учасник_1 запропонував awards.items.quantit  == 1 000 по найменшій ціні 10

Учасник_2 запропонував awards.items.quantit  ==  1 000 по ціні 11

Учасник_3 запропонував awards.items.quantit  ==  8 000 по ціні 12

Всі три учасники успішно пройшли перевірку документів (awards.status == waiting)

ЦБД розраховує x_quantityLimit == (1 000 + 1 000 + 8 000) * 0.8 == 8 000

Обсяг 8000 повністю покриває тільки запропоновані обсяги Учасника_1 і Учасника_2. Запропонований Учасником_3 обсяг повнітю не реалізується (він запропонував 8 000, а після розподілення між першим і другим учасниками, залишилось не розподілено тільки (8 000 - 1 000 - 1 000) == 6 000 )

В даному прикладі тільки третій учасник отримує статус pending_waiting

Після цього Організатор дискваліфіковує Учасника_1 з його пропозицією 1 000.

Учасник_3 НЕ отримує статус pending з своєю пропозицією 8000, бо 8000 повністю не покривається залишком обсягу (8000 - 1000 = 7000 - залишок обсягу, а Учасник_3 пропонує 8000, що більше, ніж 7000)

Його статус залишається pending_waiting.

P.S.: в майбутньому він отримає статус "Умовний переможець" (pending_admission) і зможе погодитись реалізувати залишок, який складає 7000 із його запропонованих 8000. 


Перехід із pending_admission:

 Учасник в статусі pending_admission має можливість вказати обсяг, який він готовий закрити і змінити статус на pending. Далі відбувається його кваліфікація за стандартною логікою

pending_waiting Очікується рішення waiting

Автоматично.

Завершився verificationPeriod.endDate

Статус pending_waiting отримують Аварди, які перебувають у списку результатів Модуля Аукціону і які успішно пройшли етап перевірки документів (award.status <> unsuccessful) за умови, що обсяг, який вони запропонували повністю НЕ покривається розрахованим значенням x_quantityLimit, з причини, що обсяг вже закритий іншими пропозиціями.


Приклад 1:

Організатор вказав procedure.items.quantity == 10 000

Учасник_1 запропонував awards.items.quantit  == 3 000 по найменшій ціні 10

Учасник_2 запропонував awards.items.quantit  ==  1 000 по ціні 11

Учасник_3 запропонував awards.items.quantit  ==  2 000 по ціні 12

Всі три учасники успішно пройшли перевірку документів (awards.status == waiting)

ЦБД розраховує x_quantityLimit == (3000 + 1 000 + 2 000) * 0.8 == 4 800

Обсяг 4 800 повністю покриває тільки запропоновані обсяги Учасника_1 і Учасника_2. Запропонований Учасником_3 обсяг повнітю не реалізується (він запропонував 2 000, а після розподілення між першим і другим учасниками, залишилось не розподілено тільки (4 800 - 3 000 - 1 000) == 800 )

В даному прикладі тільки третій учасник отримує статус pending_waiting

Приклад 2:

Організатор вказав procedure.items.quantity == 10 000

Учасник_1 запропонував awards.items.quantit 3 000 по найменшій ціні 10

Учасник_2 запропонував 2 000 по ціні 11

Учасник_3 запропонував 1 000 по ціні 12

Всі три учасники успішно пройшли перевірку документів (awards.status == waiting)

ЦБД розраховує x_quantityLimit == (3000 + 1 000 + 2 000) * 0.8 == 4 800

Обсяг 4 800 повністю покриває тільки запропонований обсяг Учасника_1. Запропонований Учасником_2 обсяг повнітю не реалізується (він запропонував 2 000, а після Учасника_1 , залишилось не розподілено тільки (4 800 - 3 000) == 1800 )

В даному прикладі другий і третій учасники отримують статус pending_waiting


Організатор не може дискваліфікувати Учасника, що очікує рішення

Учасник не має можливості відмовитись від очікування.

pending_admissionПідтвердження набуття статусу переможцяpending_waiting

Автоматично.

Завершився qualificationPeriod.endDate

АБО

Автоматично.

За умови, що всі Awards, що мали статус pending отримали статус active

(Організатор успішно кваліфікував всіх Переможців, залишилось вирішити питання тільки з залишком апропонованого обсягу, що може бути закритий "умовним переможцем")

АБО

Автоматично.

За умови, що взагалі відсутні Аварди у статусі pending

(це виключення описано тут)


Статус pending_admission отримує тільки один Award, який знаходиться у статусі pending_waiting і запропонував найменшу після Переможців ціну.

Згідно Постанови "Учасник, що набуває статусу умовного переможця, визначається на 30-й робочий день після завершення аукціону", але у випадку, коли Організатор успішно кваліфікував всіх переможців (всі Awards у статусі pending набули статусу active), не чекаючи 30-го дня після завершення МА, учасник одразу отримує статус pending_admission і отримує можливість погодитись чи відмовитись від залишку обсягу.

Це потрібно для того, щоб після успішної кваліфікації переможців, небуло необхідності чекати завершення періоду кваліфікації для погодження умовним переможцем своє право на набуття статуса переможця.

В цьому статусі Умовний переможець може:

  • вказати обсяг, на який учасник погоджується (обсяг має дорівнювати або бути меншим за нерозподілений залишок) і
  • надіслати запит на зміну Award.status: pending_admission → pending (підтвердити набуття статусу переможця)
  • Відмовитися від набуття статусу переможця - надіслати запит на Award.status: pending_admidssion →  cancelled
  • Бездіяльність умовного переможця протягом awards.admissionPeriod (принцип мовчазної відмови), автоматична зміна Award.status: pending_admidssion →  cancelled
activeОчікується договірpending

Ручна дія.

Організатор надсилає запит на зміну award.status: pending → active

ЦБД має валідувати, що в Авард завантажено документ з documentType: auctionProtocol


cancelledУчасник не став переможцемpending_admission

Ручна дія.

Учасник (умовний переможець) надсилає запит на зміну статуса

Автоматично.

В момент, коли будь-який Авард набуває статусу pending_admission, всі інші Аварди, які знаходяться у статусі pending_waiting автоматично набувають статус cancelled


Після набуття статусу pending_admission "Умовний переможець" має можливість відмовитись від запропонованого обсягу і скасувати свою заявку (змінити статус Аварда з pending_admission на cancelled)


Після набуття статусу pending_admission "Умовний переможець" всі Аварди, які на цей момент заходились у статусі pending_waiting набувають статус cancelled

unsuccessfulДискваліфіковано

pending

АБО

verification

Ручна дія.

Організатор надсилає запит на зміну award.status: pending → unsuccessful

ЦБД має валідувати, що в Авард завантажено документ з documentType: act



Логіка проведення кваліфікації

Одразу по завершенню роботи Модуля аукціону (далі - МА) генеруються Аварди, кількість яких відповідає кількості Бідів, які на момент початку МА мали статус active.

Всі Аварди створюються в статусі verification. Порядок розміщення Авардів важливий і логіка формування порядку описана тут. Паралельно з цим починається verificationPeriod, який триває 10 р.д.

Протягом цих 10 р. д. Організатор має Верифікувати учасника і змінити статус Аварда з verification на waiting, або дискваліфікувати і змінити статус Аварда з verification на unsuccessful (тут валідація на док rejectionProtocol).

  • Якщо Організатор верифікував всіх учасників швидше, ніж за 10 р.д. у нього має бути можливість надіслати запит на зміну статуса процедури qualification → active_qualification. При цьому verificationPeriod.endDate в API не змінюється. Якщо на момент зміни статусу процедури наявні Аварди у статусі verification, їх статус автоматично змінюється на waiting.
  • Якщо Організатор НЕ верифікував всіх учасників протягом 10 р.д. (завершився verificationPeriod), то ЦБД автоматично змінює статус процедури qualification → active_qualification. При цьому, якщо на момент зміни статусу процедури наявні Аварди у статусі verification, їх статус автоматично змінюється на waiting. (бізнесово називається "Мовчазна згода")

Якщо всі Аварди набули статус waiting ТА unsuccessful і не залишилось Авардів у статусі verification, ЦБД автоматично розраховує параметр x_quantityLimit (бере quantity всіх Авардів у статусі waiting, сумує їх і вираховує 80%)

Після цього ЦБД розподіляє всі Аварди, які перебувають у статусі waiting по статусам pending або pending_waiting за наступною логікою:

  • Перевіряється Авард з найменшим value (запропонував наймену ціну), береться його quantity і порівнюється з x_quantityLimit.
    • Якщо awards[0].items.quantity <= x_quantityLimit, то Авард отримує статус pending
    • Якщо awards[0].items.quantity > x_quantityLimit, то Авард отримує статус pending_waiting

    • Можливо таке, що перший Авард одразу отримає статус pending_waiting. Логічно, що всі наступні Аварди також отримають цей статус.

      В такому випадку, перший Авард має одразу отримати статус pending_admission і слідувати логіці цього статуса.

      Наприклад, 

      Організатор вказав procedure.items.quantity == 10 000

      Учасник_1 запропонував 10 000 по найменшій ціні 10

      Учасник_2 запропонував 500 по ціні 11

      Учасник_3 запропонував 500 по ціні 12

      Всі три учасники успішно пройшли перевірку документів (awards.status == waiting)

      ЦБД розраховує x_quantityLimit == (10000 + 500 + 500) * 0.8 == 8 800

      Реалізувати є можливість тільки 8800, а перший Авард пропонував 10000, що є більше, ніж очікується. Він одразу отримує статус pending_waiting, і всі наступні Аварди також.

      Одразу після цього перший Авард отримає статус pending_admission  і може погодитись на 8800 із своїх 10000, які він ставив спочатку.

      Якщо він відмовиться ставити 8800 замість 10000, то процедура вважається неуспішною. Наступних Авардів вже не кваліфікують.

  • Перевіряється наступний Авард із черги. Береться його quantity і порівнюється з (x_quantityLimit - awards[0].items.quantity). 
    • Якщо awards[1].items.quantity <=  (x_quantityLimit - awards[0].items.quantity) залишку, то Авард отримує статус pending
    • Якщо awards[1].items.quantity > (x_quantityLimit - awards[0].items.quantity) залишку, то Авард отримує статус pending_waiting
  • Аналогічна перевірка відбувається з кожним наступним Авардом до моменту, коли перший Авард отримує статус pending_waiting. Коли перший із всіх Авардів отримає статус pending_waiting, то всі наступні також автоматично отримують цей статус.

За результатами автоматичного розподілення, всі Аварди, які мали статус waiting отримують новий статус pending АБО pending_waiting.

Залежності від періоду verificationPeriod немає. Організатор може раніше завершення цього періоду провести перевірку документів учасників і запитом змінити статус процедури з qualification → active_qualification.

Після цього ЦБД для кожного Аварда у статусі pending генерує протокол.

Від Організатора очікується

  • АБО завантаження підписаного протоколу до Аварду, а також завантаження в документи процедури documentType: x_verificationAct + зміна статуса Аварда на active
  • АБО завантаження в Авард документа documentType: act і подальша дискваліфікація цього Аварда (зміна статуса Аварда на unsuccessful), а також завантаження в документи процедури documentType: x_verificationAct

Організатор може дискваліфікувати тільки Авард у статусі pending і не може дискваліфікувати Авард у статусі pending_waiting

Якщо Організатор дискваліфіковує Авард, ЦБД має виконати перевірку першого у списку Аварду у статусі pending_waiting.

  • Якщо обсяг першого в порядку Аварду у статусі pending_waiting дорівнює чи менше нерозподіленого залишку, то цей Авард автоматично змінює свій статус на pending. Приклади тут
  • Якщо обсяг першого в порядку Аварду у статусі pending_waiting більше нерозподіленого залишку, то Авард залишається в статусі pending_waiting. Приклади тут

Кваліфікація Авардів продовжується поки не залишиться жодного Аварда у статусі pending.

Всі Аварди, що отримували статус pending мають бути АБО кваліфіковані (отримати статус active), АБО дискваліфіковані (отримати статус unsuccessful).

Як тільки всі Аварди, що мали статус pending змінили свій статус, Авард, що має статус pending_waiting і знаходиться перший у списку, отримує статус pending_admission (бізнесово називається "Умовний переможець")

Власнику Аварда у статусі pending_admission має бути доступна можливість надіслати запит, в якому вказати quantity. При виконанні запиту ЦБД має перевірити, що quantity, яке вказав Аавард у своєму запит <= нерозподіленому залишку, що дорівнює x_quantityLimit - sum(quantity) всіх Авардів, що отримали статус active.

Після цього "Умовний переможець" має надіслати запит на зміну статуса Аварда pending_admission → pending

Організатор кваліфікує цей Авард і змінює його статус на active, або дискваліфікує і змінює статус на unsuccessful.

Робота з Авардами на цьому завершується.

ПРИКЛАДИ:

Назва в прикладахшлях в APIБізнесова назва
Організатор-Замовник
Обсягprocedure.items[0].quantityРозмір частки річної квоти
Макс цінаprocedure.value.amountЦінова пропозиція (max)
Обсяг пропозиціїprocedure.bids[*].quantityРозмір частки квоти в заяві
Ціна пропозиціїprocedure.bids[*].valueЦінова пропозиція за 1 кВт⋅год


Приклад 1:

  • Організатор вказав Обсяг == 10000
  • Організатор вказав Макс ціну == 12

Прийшло три Учасника:

Учасник_1:

  • Обсяг пропозиції == 3000
  • Ціна пропозиції == 10

Учасник_2:

  • Обсяг пропозиції == 2000
  • Ціна пропозиції == 11

Учасник_3:

  • Обсяг пропозиції == 1000
  • Ціна пропозиції == 12


Всі три учасники успішно пройшли перевірку документів і отримали статус Аварда waiting

ЦБД розрахувала x_quantityLimit == (3000 + 2000 + 1000) * 0,8 == 4800

ЦБД розподіляє Обсяги пропозицій учасників:

Учасник_1:

4800 - 3000 = 1800

В даному прикладі Обсяг пропозиції Учасника_1 покривається x_quantityLimit

Учасник_1 отримує статус pending

Учасник_2:

1800 - 2000 < 0

В даному прикладі Обсяг пропозиції  Учасника_2 НЕ покривається x_quantityLimit, бо після Учасника_1 залишився нерозподілений залишок 1800, а Обсяг пропозиції Учасник_2 - більший і дорівнює 2000

Учасник_2 отримує статус pending_waiting

Після того, як Учасник_2 отримав статус pending_waiting, наступні учасники також отримуть цей статус автоматично, незважаючи на те, що їх обсяг пропозиції покривається нерозподіленим залишком (вони запропонували більшу ціну).

Учасник_3 отримує статус pending_waiting

Організатор успішно кваліфікує Учасника_1 і його Авард отримує статус active

ЦБД перевіряє, що відсутні інші Аварди у статусі pending і автоматично змінює статус Учасника_2 на pending_admission (умовний переможець. Пропонуємо забрати нерозподілений залишок).

Всі інші Аварди, які на момент отримання Учасником_2 статусу pending_admission перебували у статусі pending_waiting, автоматично отримують статус cancelled

Учасник_2 приймає пропозицію реалізувати 1800 нерозподіленого залишку із 2000, які він пропонував початково.

Учасник_2 надсилає запит і статус його Аварда змінюється на pending

а) Організатор успішно кваліфікує Учасника_2, змінює статус Аварда на active

Результат: Обсяг 4800 закритий Учасником_1, який забрав 3000 і Учасником_2, який забрав залишок - 1800. Учасник_3 не забрав жодного обсягу

б) 

Організатор дискваліфікує Учасника_2, змінює статус Аварда на unsuccessful

Результат: Обсяг 4800 частково закритий Учасником_1, який забрав 3000. Учасник_2 дискваліфікований. Учасник_3 не забрав жодного обсягу


Приклад 2:

  • Організатор вказав Обсяг == 10000
  • Організатор вказав Макс ціну == 12

Прийшло три Учасника:

Учасник_1:

  • Обсяг пропозиції == 3000
  • Ціна пропозиції == 10

Учасник_2:

  • Обсяг пропозиції == 2000
  • Ціна пропозиції == 11

Учасник_3:

  • Обсяг пропозиції == 1000
  • Ціна пропозиції == 12


Всі три учасники успішно пройшли перевірку документів і отримали статус Аварда waiting

ЦБД розрахувала x_quantityLimit == (3000 + 2000 + 1000) * 0,8 == 4800

ЦБД розподіляє Обсяги пропозицій учасників:

Учасник_1:

4800 - 3000 = 1800

В даному прикладі Обсяг пропозиції Учасника_1 покривається x_quantityLimit

Учасник_1 отримує статус pending

Учасник_2:

1800 - 2000 < 0

В даному прикладі Обсяг пропозиції  Учасника_2 НЕ покривається x_quantityLimit, бо після Учасника_1 залишився нерозподілений залишок 1800, а Обсяг пропозиції Учасник_2 - більший і дорівнює 2000

Учасник_2 отримує статус pending_waiting

Після того, як Учасник_2 отримав статус pending_waiting, наступні учасники також отримуть цей статус автоматично, незважаючи на те, що їх обсяг пропозиції покривається нерозподіленим залишком (вони запропонували більшу ціну).

Учасник_3 отримує статус pending_waiting

Організатор успішно кваліфікує Учасника_1 і його Авард отримує статус active

ЦБД перевіряє, що відсутні інші Аварди у статусі pending і автоматично змінює статус Учасника_2 на pending_admission (умовний переможець. Пропонуємо забрати нерозподілений залишок).

Всі інші Аварди, які на момент отримання Учасником_2 статусу pending_admission перебували у статусі pending_waiting, автоматично отримують статус cancelled

Учасник_2 НЕ приймає пропозицію реалізувати 1800 нерозподіленого залишку із 2000, які він пропонував початково.

Учасник_2 надсилає запит і статус його Аварда змінюється на cancelled

Результат: Обсяг 4800 частково закритий Учасником_1, який забрав 3000. Учасник_2 відмовився закрити залишок, що склада 1800. Учасник_3 не забрав жодного обсягу


Приклад 3:

  • Організатор вказав Обсяг == 10000
  • Організатор вказав Макс ціну == 12

Прийшло три Учасника:

Учасник_1:

  • Обсяг пропозиції == 3000
  • Ціна пропозиції == 10

Учасник_2:

  • Обсяг пропозиції == 2000
  • Ціна пропозиції == 11

Учасник_3:

  • Обсяг пропозиції == 1000
  • Ціна пропозиції == 12


Всі три учасники успішно пройшли перевірку документів і отримали статус Аварда waiting

ЦБД розрахувала x_quantityLimit == (3000 + 2000 + 1000) * 0,8 == 4800

ЦБД розподіляє Обсяги пропозицій учасників:

Учасник_1:

4800 - 3000 = 1800

В даному прикладі Обсяг пропозиції Учасника_1 покривається x_quantityLimit

Учасник_1 отримує статус pending

Учасник_2:

1800 - 2000 < 0

В даному прикладі Обсяг пропозиції  Учасника_2 НЕ покривається x_quantityLimit, бо після Учасника_1 залишився нерозподілений залишок 1800, а Обсяг пропозиції Учасник_2 - більший і дорівнює 2000

Учасник_2 отримує статус pending_waiting

Після того, як Учасник_2 отримав статус pending_waiting, наступні учасники також отримуть цей статус автоматично, незважаючи на те, що їх обсяг пропозиції покривається нерозподіленим залишком (вони запропонували більшу ціну).

Учасник_3 отримує статус pending_waiting

Організатор дискваліфікує Учасника_1 і його Авард отримує статус unsuccessful

При дискваліфікації Учасника із статуса pending → unsuccessful, ЦБД перевіряє наявніть Авардів у статусі pending_waiting

Якщо в рамках періоду очікування результатів кваліфікації (qualificationPeriod) один з award’ів у статусі pending дискваліфіковують, ЦБД розподіляє обсяг переможців, яких було дискваліфіковано, між учасниками з авардами у статусі pending_waiting з наступними найменшими за величиною ціновими пропозиціями. При цьому, вже розрахований обсяг квоти 80% не змінюється. Якщо в результаті для учасника, з award'ом у статусі pending_waiting, формується обсяг, що повністю задовольняє його заяву, award такого учасника переходить до статусу pending. З моменту зміни статусу такого award’у на pending для такого учасника формується окремий період опублікування протоколу та підписання договору (signingPeriod) 15 робочих днів (аналогічно до award'ів, які сформувались спочатку).

Учасник_2 автоматично отримує статус pending

Учасник_3 залишається в статусі pending_waiting

Якщо Організатор дискваліфікує Учасника_2, то Учасник_3 отримає статус pending і почнеться його кваліфікація.

Учасник_3 успішно кваліфіковано.

Результат: Обсяг 4800 частково закритий Учасником_3, який запропонував 1000. Учасник_1 і Учасник_2 дискваліфіковані


Приклад 4:

  • Організатор вказав Обсяг == 10000
  • Організатор вказав Макс ціну == 12

Прийшло три Учасника:

Учасник_1:

  • Обсяг пропозиції == 3000
  • Ціна пропозиції == 10

Учасник_2:

  • Обсяг пропозиції == 1000
  • Ціна пропозиції == 11

Учасник_3:

  • Обсяг пропозиції == 2000
  • Ціна пропозиції == 12


Всі три учасники успішно пройшли перевірку документів і отримали статус Аварда waiting

ЦБД розрахувала x_quantityLimit == (3000 + 2000 + 1000) * 0,8 == 4800

ЦБД розподіляє Обсяги пропозицій учасників:

Учасник_1:

4800 - 3000 = 1800

В даному прикладі Обсяг пропозиції Учасника_1 покривається x_quantityLimit

Учасник_1 отримує статус pending

Учасник_2:

1800 - 1000 = 800

В даному прикладі Обсяг пропозиції  Учасника_2 покривається x_quantityLimit, бо після Учасника_1 залишився нерозподілений залишок 1800, а Обсяг пропозиції Учасник_1 - менший, дорівнює 1000

Учасник_2 отримує статус pending

Учасник_3:

800 - 2000 < 0

В даному прикладі Обсяг пропозиції Учасника_3 НЕ покривається x_quantityLimit, бо після Учасника_1 залишився нерозподілений залишок 1800, частина якого розподілилася на Учасника_2, він забрав 1000, Учаснику_3 залишилось 800, а Обсяг пропозиції Учасника_3 - більший, дорівнює 2000

Учасник_3 отримує статус pending_waiting

Організатор успішно кваліфікує Учасника_1 і його Авард отримує статус active

Організатор успішно кваліфікує Учасника_2 і його Авард отримує статус active

Коли всі Awards, які були у статусі pending успішно кваліфіковані, ЦБД перевіряє наявніть Авардів у статусі pending_waiting

Учасник_3 має статус Аварда pending_waiting, його запропонований обсяг повністю не покривається залишком обсягу, що залишився після розподілення між Учасником_1 і Учасником_2

В даному випадку Учасник_3 отримує статус pending_admission

Учасник_3 має протягом 5-ти днів погодитись "закрити залишок" (залишок складає 800, а Учасник_3 пропонував 2000) і надіслати запит на зміну статуса на pending

Організатор успішно кваліфікує Учасника_3, статус Аварда змінюється на active

Результат: 4800 повністю закритий Учасником_1 у розмірі 3000, Учасником_2 у розмірі 1000, Учасником_3 у розмірі 800












  • No labels