Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents


Посилання:

Голосарій

Аукціон закритого типу - аукціон, в якому з моменту активації модуля аукціону до моменту завершення аукціону електронною торговою системою не відображається (не публікується) жодна інформація, що подана учасниками в заявах про участь або доданих до них документах, а також цінові пропозиції, які були змінені протягом часу, відведеного на оновлення таких пропозицій; Роль спостерігача на МА передбачена і протягом перебігу МА відображає в полі інформації тільки текст "Учасники подають закриті цінові пропозиції". Після завершення МА, інформація щодо ставок відкривається і Спотерігач може побачити Учасників і їх ставки.

...

Цінова пропозиція - ціна, яку пропонує Учасник за одиницю виставленої Організатором продукції. Розмірність одиниць Одиниці виміру вказує Організатор при публікації процедури (тонна, кілограм, ящик тощо). Ціна за одиницю декларується учасником та подається в ЕТС до закінчення кінцевого строку подання заяв про участь в аукціоні або в ході проведення аукціону шляхом оновлення такої цінової пропозиції.

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

Крок аукціону (мінімальний крок аукціону) – мінімальна надбавка, на яку в ході електронного аукціону (або на етапі подання закритих цінових пропозицій) може здійснюватися підвищення цінової пропозиції. Розмір мінімального кроку аукціону визначається організатором аукціону в діапазоні від 1 до 10% від стартової ціни лота.

Валідна ставка - це ставка, що більша або дорівнює стартовій ціні

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

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

З метою проведення аукціонів на підвищення ціни з кількома переможцями в межах системи Prozorro.Sale реалізовано sellingMethod: basicSell-multiAwards (partialAwards, fractionalAwards, spreadAwards). Така процедура надає змогу Замовнику здійснити продаж лоту, в рамках аукціону, необмеженій кількості учасників, а учаснику придбати саме ту кількість обсягу лота, що йому потрібна.

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

Критерієм вибору переможця є цінова пропозиція, що складається з ціни за одиницю та кількість одиниць.

...

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

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

НАЙБІЛЬШЕ ПРОЦЕДУРА СХОЖА НА basicSell-english

...

та renewables-multiAwards

  1. На етапі публікації Процедури:
    • В одній процедурі може бути тільки один лот (item)
    • Організатор на етапі публікації вказує:
      • Обсяг, який реалізується (procedure.items[0].quantity)Мінімальну ціну на одиницю обсягу, яку приймає ЦБД в заявах на участь
      • Одиницю виміру обсягу (procedure.value.*)
      • Мінімальний обсяг, який може викупити учасник (procedure.minimalPart)
      • items[0].unit)
        • із словника unitCode
        • ЦБД приймає тільки
          • BX - ящик
          • D64 - блок
          • E50 - одиниця
          • GRM - грам
          • H87 - штуки
          • KGM - кілограм
          • LTR - літр
          • MTQ - метри кубічні
          • RM- пачка
          • TNE - тонни
      • Мінімальну ціну на одиницю обсягу, яку приймає ЦБД в заявах на участь (procedure.value.*)
      • Мінімальний обсяг, який може викупити учасник (procedure.minimalPart)
      • Крок аукціону (procedure.minimalStep)
      • В процедурі може продаватися "скоропорт" (procedure.isPerishable)
  2. На етапі подання заяв на участь:
    • Учасник може подати
    На етапі подання заяв на участь:
    • Учасник може подати тільки одну заяву на участь в одному аукціоні
    • Учасник в заяві на участь вказує:
      • Бажану кількість обсягу активу (bids[].quantity)
        • Бажана кількість не може бути менше за Мінімальний обсяг, що вказав Організатора (< procedure.minimalPart)
      • Цінову пропозицію за одиницю обсягу (bids[].value.*)
  3. Аукціон:
    • Аукціон продажу частинами
    • Учасник може робити ставку >= мінімальному кроку аукціона (procedure.minimalStep)
  4. Кваліфікація:
    • Кількість переможців необмежена
    • Наявність необмеженої кількості учасників, що кваліфікуються
    • Учасники, що очікують кваліфікації Переможців НЕ можуть відмовитись від очікування
    • Можливість учаснику, що очікує викупити нерозподілений залишок, який має бути не менше, ніж Мінімальний обсяг, який вказав Організатор.

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

  • Під час публікації процедури з запиті необхідно передати для item:

    • Обовʼязковий Основний класифікатор - CAV

      • на рівні ЦБД можливість обрати:
        • 03000000-1 Сільськогосподарська, фермерська продукція, продукція рибальства, лісівництва та супутня продукція та всі вкладені коди
        • 09000000-3 Нафтопродукти, паливо, електроенергія та інші джерела енергії та всі вкладені коди
        • 14000000-1 Гірнича продукція, неблагородні метали та супутня продукція та всі вкладені коди
        • 15000000-8 Продукти харчування, напої, тютюн та супутня продукція та всі вкладені коди
        • 18000000-9 Одяг, взуття, сумки та аксесуари та всі вкладені коди
        • 19000000-6 Шкіряні та текстильні, пластмасові та гумові матеріали та всі вкладені коди
        • 22000000-0 Друкована та супутня продукція та всі вкладені коди
        • 24000000-4 Хімічна продукція та всі вкладені коди
        • 44000000-0 Конструкції та конструкційні матеріали; допоміжна будівельна продукція (крім електроапаратури) та всі вкладені коди
    •  Не обовʼязковий Додаткові класифікатори - CPVS, CVZU (CVZU - про землю. ЇЇ в цій процедурі немає, тому краще прибрати цей Додатковий класифікатор)

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

basicSell-multiAwards - legal_names.json 

Timeline процедури

draw.io Diagram
bordertrue
diagramNameBSM_Process_diagram
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth1382
revision3


Публікація процедури

Створення процедури

Anchor
required_fields
required_fields
При публікації процедури про проведення аукціону Оганізатору необхідно заповнити обовʼязкові поля:

  • Інформація про Організатора аукціону (sellingEntity)
    • Ідентифікатори Організатора аукціону (Код ЄДРПОУ або ІПН або паспорт) (sellingEntity.identifier)
    • Адреса Організатора аукціону (повна адреса) (sellingEntity.address)
    • Інформація про контактну особу (sellingEntity.contactPoint)
  • Номер лоту (lotId)
  • Повну назву Аукціону (заголовок) (title)
  • Опис аукціону (description)
  • Банківські рахунки організатора (bankAccounts)
  • Гарантійний внесок (guarantee)
  • Мінімальна ціна за одиницю обсягу (value)
    • Сума (value.amount)
    • Валюта (value.currency) 
    • Розмірність одиниці
    • (value.
    • valuePer
    • currency)
  • Мінімальна частка, яку може викупити учасник (minimalPart)
  • Інформація про лот (items)
    • Опис лоту (items.description)
    • Класифікатор лоту (items.classification)
    • Обсяг лоту (items.quantity)
    • Одиниці виміру (items.unit) із переліку:
      • BX - ящик
      • D64 - блок
      • E50 - одиниця
      • GRM - грам
      • H87 - штуки
      • KGM - кілограм
      • LTR - літр
      • MTQ - метри кубічні
      • RM- пачка
      • TNE - тонни
  • Документи
  • Дата проведення аукціону (auctionPeriod.startDate)

Повний перелік полів в Swagger (ДОДАТИ ПОСИЛАННЯ)

Редагування процедури

Протягом періоду редагування (rectifiactionPeriod) Організатор аукціону має право самостійно вносити зміни в поля та документи процедури .
Організатор має можливість внести зміни в поля які він заповнював самостійно під час публікації аукціону, окрім Дата проведення аукціону (auctionPeriod.startDate) та всіх автогенерованих полів:


Для внесення змін Організатор має попередньо завантажити документ - "Погодження змін до опису лоту. Опис причин редагування." (documentType: clarifications). Цей документ має містити перелік змін, які вносяться в оголошення, причину внесення таких змін. Він має бути доступний для завантаження в період редагування (rectificationPeriod) та є обов'язковим для подальшого внесення змін в поля процедури.

...

Expand

previousAuctionId

tenderAttempts

sellingEntity

lotId

title

description

accessDetails

bankAccounts

x_documentRequirements

x_additionalInformation

value

valueAddedTaxCharged

discount

guarantee

minNumberOfQualifiedBids

items

registrationFee

minimalPart

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

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

Anchor
rectification_period
rectification_period
rectificationPeriod

Період редагування

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

За 5 к.д. о 18:00 до auctionPeriod.startDate 

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

Приклад: якщо auctionPeriod.startDate == 07.10.2024, то rectificationPeriod.endDate == 01.10.2024 о 18:00

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

Expand
titleconfig
Code Block
languageyml
"rectificationPeriod": {
	"endDate": {
		"conditions": [],
		"diff": "6 days",
		"direction": 		"backward",
		"from": "auctionPeriod.startDate",
		"time": "18:00"
	},
	"startDate": {
	"from": "now"
	}
}


tenderPeriodПеріод подання пропозицій

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

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

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

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

active_tendering → active_auction

Expand
titleconfig
Code Block
languageyml
"tenderPeriod": {
	"endDate": {
		"diff": "1 days",
		"direction": "backward",
		"from": "auctionPeriod.startDate",
		"time": "20:00"
	},
	"startDate": {
	"from": "now"
	}
}


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

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

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

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

-
Expand
titleconfig
Code Block
languageyml
"questionPeriod": {
	"endDate": {
		"diff": "1 days",
		"direction": "backward",
		"from": "auctionPeriod.startDate",
		"time": "18:00"
	},
	"startDate": {
	"from": "now"
	}
}


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

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

о 18:00 за 1 р.д. до початку аукціону-
Expand
titleconfig
Code Block
languageyml
"enquiryPeriod": {
	"endDate": {
		"diff": "1 days",
		"direction": "backward",
		"from": "auctionPeriod.startDate",
		"time": "18:00"
	},
	"startDate": {
	"from": "now"
	}
}


auctionPeriodПеріод аукціону

Завжди припадає на робочий день. Якщо розрахована дата - вихідний, то стар старт Аукціону буде в найближчий будній.

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

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

Верхню кількість днів - не обмежуємо

Приклад: якщо datePublished == 25.09.2024, то auctionPeriod.startDate >= 03.10.2024

АБО
якщо Організатор передав параметр isPerishable == true, то

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

Верхню кількість днів - не обмежуємо

Приклад: якщо datePublished == 25.09.2024, то auctionPeriod.startDate >= 27.09.2024

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

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

active_auction → qualification OR unsuccessful

Залежить від наявності поданих заяв на участь (за умови наявності не менш ніж 2-х заяв на участь).

Expand
titleconfig
Code Block
languageyml
"auctionPeriod": {
	"startDate": {
		"conditions": [
			{
			"auto_set": true,
			"case": {
				"isPerishable": true
			},
			"diff": "2 business days",
			"direction": "forward",
			"error": "raise",
			"from": "now",
			"time": "11:00 - 13:00"
			}
		],
		"time": "11:00 - 13:00",
		"validation": {
			"is_business_day": true,
			"min": {
				"diff": "8 days",
				"direction": "forward",
				"error": "raise",
				"from": "now",
				"time": "11:00",
				"is_business_day": true
			}
		}
	}
}


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

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

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


Expand
titleconfig
Code Block
languageyml
"qualificationPeriod": {
	"endDate": {
		"diff": "20 business days",
		"direction": "forward",
		"from": "now",
		"time": "18:00"
	},
	"startDate": {
	"from": "now"
	}
}


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

draw.io Diagram
bordertrue
diagramNamebsw_statuses
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth890790
revision56


Технічна назваБізнесова назваПерехід зЗа умовиКоментар
active_tenderingПрийняття заяв на участь-

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

В момент створення процедури


active_auctionАукціонactive_tendering

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

Завершився період прийому заяв на участь.

В момент tenderPeriod.endDate

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

active_qualificationОчікується опублікування протоколу

active_auction

АБО

active_tendering

АБО

active_awarded

АБО

active_tendering

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

Завершився Модуль Аукціону

АБО

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

Завершився tenderPeriod і на момент tenderPeriod.endDate присутній тільки один валідний бід.

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

Завершився Аукціон

АБО

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

Завершився tenderPeriod і на момент tenderPeriod.endDate присутній тільки один валідний бід.

АБО

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

Якщо протягом qualificationPeriod попереднього учасника дискваліфіковано на етапі підписання договору, наявні учасники, що очікують, то починається кваліфікація першого учасника зі переліку з підписання нового протоколу. Процедура повторно набуває статусу active_qualification

В момент набуття процедурою вперше статуса active_qualification в обʼєкті процедури створюються Awards[]
active_awardedОчікується підписання договору

active_qualification

Ручна дія.

Організатор завантажує протокол і надсилає запит на зміну статусу Awards[].status: pending → active

Після цього ЦБД автоматично формує для цього учасника сontracts[] та змінює статус процедури на active_awarded

Статус active_awarded процедура має, якщо в ній присутній хоч один contracts[] у статусі pending

На ЦБД перевірка на зміну статуса процедури на active_awarded відбувається в момент, коли в обʼєкті процедури змінює статус будь який contracts[]

  • Якщо статус будь якого contracts[] змінюється на pending, то статус процедури змінюється на active_awarded
  • Якщо в contracts[] відсутні обʼєкти у статусі pending, то ця логіка не відпрацьовує


В ситуації, коли зі всіма переможцями підписано Договори, їх contracts[] отримали статус active - визначається "Умовний переможець" (Awards[].status: pending_admission), процедура не має contracts[*] у статусі pending, то вона знов набуває статусу active_qualification

Процедура також може змінити status: active_awarded → active_qualification у випадку, якщо переможців дискваліфікували на етапі підписання договору

completeАукціон завершеноactive_awardedqualification

Ручна дія.

Організатор надсилає запит на зміну procedure.status: active_qualification → complete

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

Після завершення роботи із договором (contracts[])Тільки якщо в процедурі відсутні contracts[] у статусі pending і awards[] у статусі pending, Організатор аукціону натискає може натиснути на кнопку “Завершити аукціон”. Після чого майданчик Організатора надсилає запит до ЦБД щодо зміни статусу процедури на “Аукціон завершено”.

При виконанні дії зміни статуса на complete ЦБД перевіряє:

  • Має бути хоча б один contracts[] у статусі active
  • Має бути хоча б один awards[] у статусі active
unsuccessfulАукціон не відбувся

active_tendering

active_qualificationactive_awarded

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

Якщо на момент tenderPeriod.endDate відсутні заяви на участь;

АБО

Якщо Організатор дискваліфікував всіх Учасників на етапі підписання протоколів

АБО

Якщо Організатор дискваліфікував Учасника на етапі підписання договоручи договорів


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

cancelled

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

active_tendering

active_auction

active_qualificationactive_awarded

Ручна дія.

Організатору доступна опція "Скасування" Процедури.

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

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

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

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

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

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

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

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

Публічність
illustrationІлюстраціїIllustrationЗображення, що можуть додаватися Організатором до процедуриНіТак
noticeПаспорт торгівAuction noticeОфіційне повідомлення, що містить деталі аукціонуНіТак
technicalSpecificationsТехнічні специфікаціїTechnical specificationsДетальна інформація про лотТакТак
evaluationCriteriaКваліфікаційні вимогиEvaluation criteriaІнформація про те, як будуть оцінюватись цінові пропозиції учасниківНіТак
contractProformaТипова форма договоруContract proformaТипова форма договоруНіТак
x_presentationПрезентаціяPresentationПрезентаціяНіТак
clarifications

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

Clarifications

Погодження змін до опису лоту. Опис причин редагуванняТак, тільки для редагування процедуриТак
digitalSignatureЦифровий підписDigital signatureЦифровий підписНіТак

Скасування процедури

У Організатора є можливість скасувати процедуру в будь-якому НЕ термінальному статусі процедури (active_tendering, active_auction, active_qualification, active_awarded).

Для скасування Організатор має:

...

В разі скасування процедури ЦБД автоматично присвоює процедурі статус “аукціон не відбувся” (procedure.status: cancelled)

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

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

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

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

Публікація заяви на участь

Періоди у заяви на участь ( bids[] ) відсутні.

...

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

Статуси заяви на участь

draw.io Diagram
bordertrue
diagramNameBSM bids statuses
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth756
revision1

...

Технічна назваБізнесова назваПерехід зЗа умовиКоментар
draftЧернетка заявимомент публікації заявки в ЦБД

Ручна дія.

Учасник надсилає запит на публікацію Bid-а

Публікація заяви на участь доступна тільки протягом tenderPeriod-а процедури.

Мають бути заповнені:

  • value
  • quantity
  • bidders

Опублікувати бід можна без документів, але без обовʼязкових документів не буде можливості активувати Біда.

activeПідтверджена заява

draft

АБО

inactive

Ручна дія.

Учасник надсилає запит на зміну статуса Bid-а

Мають бути заповнені обовʼязкові поля:

  • value
  • quantity
  • bidders

та обовʼязкові документи

deletedВидалена заява

active

АБО

inactive

Ручна дія.

Учасник надсилає запит на зміну статуса Bid-а

Скасувати свою заявку на участь є можливість тільки протягом tenderPeriod
inactiveДеактивована заява

draft

АБО

active

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

За умови, що Організатор вніс зміни в процедуру згідно опису тут

Учасник, після вивчення змін, які вніс Організатор, може надіслати запит на повторну активацію своєї заяви, або запит на видалення заяви.

Деактивація заяви на участь

У разі редагування полів процедури Організатором, заяви на участь (у статусах draft та/або active) учасників автоматично переходять у статус inactive.

...

Note
titleВимоги до майданчиків

Майданчики зобов’язані відслідковувати редагування полів в заведених процедурах\деактивацію заяв на участь своїх учасників. У випадку редагування, Майданчик інформує про факт редагування користувачів, які вже подали заяви на участь або задавали питання до аукціону, на e-mail та в особистому кабінеті Сповіщення має містити такий текст: Організатор торгів змінив умови проведення аукціону, всі заяви на участь деактивовано. Вам необхідно підтвердити або змінити свою заяву для участі в аукціоні.

Якщо користувач не активував свою пропозицію, наступного дня за 24 години необхідно надсилати повторне сповіщення на e-mail та в особистий кабінет. Сповіщення повторювати до активації заяви на участь або до завершення прийому заяв на участь.

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

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

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

Обовʼязковіть для активації bid-а

Публічність
commercialProposalЗаява на участьCommercial proposal

Заповнена електронна форма заяви

Ні

Так
x_passportКопія паспортаPassportКопія паспортаНіНі
x_IPNКопія ІПНIPNКопія ІПННіНі 
x_tenderersRegisterExtractВитяг з ЄДРПОУRegister extractВитяг з ЄДРПОУНіТак 
qualificationDocuments Документи що підтверджують кваліфікаціюQualification documentДокументи що підтверджують кваліфікаціюНіТак 
eligibilityDocumentsДокументи що підтверджують відповідністьEligibility DocumentsДокументи що підтверджують відповідністьНіТак 

auctionProtocol

Протокол аукціону

Auction protocol

Протокол аукціонуНіТак
digitalSignatureЦифровий підписDigital signatureЦифровий підписНіТак

Протягом tenderPeriod необхідно передбачити можливість Учаснику додавати і замінювати документи в bids[x].documents

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

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

...

Awards[] формується для всіх учасників, відповідно до поданих кількості заяв на участь. Валідною ставкою вважається та, що рівна або більша за значення value.amount.

Періоди Awards

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

В момент набуття Авардом статуса pending

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

verificationPeriod.endDate  == verificationPeriod.startDate + 6 р.д.

о 18:00

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

Expand
titleконфіг
Code Block
languagejs
"verificationPeriod": {
	"endDate": {
		"diff": "6 business days",
		"direction": "forward",
		"from": "now",
		"time": "18:00"
	},
	"startDate": {
	"from": "now"
}



awards.signingPeriodПеріод підписання договору

В момент набуття Авардом статуса pending

signingPeriod.endDate ==signingPeriod.startDate + 20 р.д.

о 18:00

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

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

Тривалість періоду не змінюється від статуса Аварда

Аварди в статусі pending_waiting цей період не отримують. Лише якщо в майбутньому цей Авард набуде статуса pending

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

В момент набуття Авардом статуса pending_admission

admissionPeriod.endDate == admissionPeriod.startDate + 5 р.д.

о 18:00

На рівні ЦБД: Статус аварда автоматично змінюється з pending_admission → cancelled

Період формується для Авардів у статусі pending_admission і продовжує відображатись в Аварді після зміни його статуса на будь-який інший.

Anchor
awards_statuses
awards_statuses
Статуси Awards

draw.io Diagram
bordertrue
diagramNameBSM_awards_statuses
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth1286
revision3

Технічна назваБізнесова назваПерехід зЗа умовиКоментар
pending Очікується протокол

При створенні Аварду

АБО

pending_waiting

АБО

pending_admission

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

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

АБО

Ручна дія.

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


Перехід із pending_waiting:

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

Якщо завершився qualificationPeriod і після 20 р.д. Організатор дискваліфіковує переможця, наступний у черзі, який очікує, вже НЕ отримує статус pending (на 21-й день вже не має бути Авардів у статусі pending_waiting, бо визначено одного, хто змінив свій статус на pending_admission, а всі інші змінили свій статус на cancelled)


Anchor
example_1
example_1
Приклад1:

Організатор вказав обсяг procedure.items.quantity == 1000

Учасник_1 бажає придбати awards.items.quantity == 700 по найбільшій ціні 120

Учасник_2 бажає придбати awards.items.quantity  ==  200 по ціні 110

Учасник_3 бажає придбати awards.items.quantity  ==  400 по ціні 100


В запропонований обсяг, що реалізує Організатор потрапляють тільки Учасник_1 і Учасник_2, бо їх сумарна заявка 700+200 = 900.

 (Учасник_3 не потрапляє в обсяг, бо в його заяві quantity == 400, а залишок після Учасник_1 і Учасник_2 тільки 100)

В даному прикладі, Учасник_3 отримує статус pending_waiting

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

Учасник_3 автоматично отримує статус pending з своєю пропозицією 400, бо 400 повністю покривається обсягом 1000 (першого дискваліфікували, другий 200, третій 400, 200+400 = 600, що менше, ніж 1000)


Приклад2:

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

Учасник_1 запропонував awards.items.quantity  == 100 по найбільшій ціні 120

Учасник_2 запропонував awards.items.quantity  ==  200 по ціні 110

Учасник_3 запропонував awards.items.quantity  ==  900 по ціні 100


Обсяг 1000 повністю покриває тільки запропоновані обсяги Учасника_1 і Учасника_2. Запропонований Учасником_3 обсяг повнітю не реалізується (він запропонував 900, а після розподілення між першим і другим учасниками, залишилось не розподілено тільки (1000 - 100 - 200) == 700 )

В даному прикладі Учасник_3 отримує статус pending_waiting

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

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

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

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


Перехід із pending_admission:

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

pending_waiting Очікується рішенняПри створенні Аварду

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

Статус отримують Аварди одразу після завершення роботи модуля аукціону

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


Приклад 1:

Організатор вказав обсяг procedure.items.quantity == 1000

Учасник_1 вказав в заявці awards.items.quantit  == 700 по найбільшій ціні 120

Учасник_2 вказав в заявці awards.items.quantit  ==  200 по ціні 110

Учасник_3 вказав в заявці awards.items.quantit  ==  200 по ціні 100


Обсяг 1000 повністю покриває тільки запропоновані в заявках Учасника_1 і Учасника_2. Бажаний Учасником_3 обсяг повнітю не реалізується (він запропонував 200, а після розподілення між першим і другим учасниками, залишилось не розподілено тільки (1000 - 700 - 200) == 100 )

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


Приклад 2:

Організатор вказав обсяг procedure.items.quantity == 1000

Учасник_1 вказав в заявці  awards.items.quantit 1000 по найбільшій ціні 100

Учасник_2 вказав в заявці  800 по ціні 110

Учасник_3 вказав в заявці  700 по ціні 100


Обсяг 1000 повністю покриває тільки бажаний обсяг Учасника_1. Бажаний Учасником_2 обсяг повністю не реалізується (він запропонував 800, а після Учасника_1 , залишилось не розподілено (1000 - 1000) == 0 )

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


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

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

pending_admissionУмовний переможецьpending_waiting

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

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

АБО

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

За умови, що всі Awards, що мали статус pending отримали статус active і їх повʼязані Contracts[] також отримали статус active

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

Три умови:
1. Триває qualificationPeriod 

2. Відсутні Аварди у статусі pending

3. Відсутні Contracts у статусі pending

Тоді ЦБД визначає Аварда, який набуває статус pending_admission



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

У випадку, коли Організатор успішно кваліфікував всіх переможців (всі Awards у статусі pending набули статусу active і їх повʼязані contracts[] також набули статусу active), не чекаючи 20-го дня після завершення МА, учасник одразу отримує статус pending_admission і отримує можливість погодитись чи відмовитись від нерозподіленого залишку обсягу.

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

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

(дискваліфікація Переможців вже неможлива, бо закриті протоколи+договори. Вибор іншого "умовного переможця" не передбачений)

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

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

Ручна дія.

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

Після завантаження в Awards[] протоколу Організатор надсилає запит на зміну Awards[].status: pending → active чим підтверджує підписання протоколу.

ЦБД автоматично створює до цього аварду contracts[] у статусі pending

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

pending_admission

АБО

pending_waiting

із pending_admission:

Ручна дія.

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

АБО

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

Якщо протягом awards.admissionPeriod учасник ("Умовний переможець") не надав відповіді


із pending_waiting:

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

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

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

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

Якщо протягом awards.admissionPeriod учасник ("Умовний переможець") не надав відповіді, то ЦБД автоматично змінює статус його Аварда.





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

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

pending

АБО

active

Ручна дія.

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

Ручна дія.

Організатор надсилає запит на зміну статуса Аварда active → unsuccessful

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

pending → unsuccessful:

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

При зміні статуса з pending → unsuccessful ЦБД має валідувати, що заповнено awards.terminationReason значенням зі словника

Anchor
contract_active_unsuccessful
contract_active_unsuccessful
active → unsuccessful:

При зміні статуса з active → unsuccessful Організатору необхідно заповнити поле terminationReason значенням зі словника

Обовʼязково завантажити документ з documentType: rejectionProtocol АБО act

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

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

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

Публічність
auctionProtocolПротокол аукціонуAuction protocol

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

Завантажити документ auctionProtocol можна тільки в Авард у статусі pending

Бізнесово - вантажити необхідно індивідуальний протокол, який генерується, як тільки процедура набуває статусу active_qualification і Авард в статусі pending

Так

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

Так
rejectionProtocolПротокол відхиленняRejection protocol

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

Обовʼязково необхідно заповнити поле terminationReason однією причиною зі словника

Так

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

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

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

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

Обовʼязково необхідно заповнити поле terminationReason однією причиною зі словника

Так

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

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

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

Підписання договору з переможцем (contracts)

Коли з учасником успішно підписано протокол і Award набуває статусу active, ЦБД автоматично генерує для цього учасника повʼязаний Contract у статусі pending

...

Періоди у contracts[] відсутні

Anchor
contract_statuses
contract_statuses
Статуси Contracts

draw.io Diagram
bordertrue
diagramNameBSM_contract_statuses
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth437
revision1

...

Технічна назваБізнесова назваПерехід зЗа умовиКоментар
pendingОчікується договірМомент набуття Award-ом статусу active

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

Якщо будь-який Авард набуває статусу active, то ЦБД автоматично створює повʼязаний contracts у статусі pending.


activeДоговір підтвердженоpending

Ручна дія.

Організатор завантажує документ contracts[x].documents.documentType: contractSigned і після цього надсилає запит на зміну contracts.status: pending → active

При зміні contracts[].status: pending → active, на ЦБД має відбутися перевірка на наявність в contracts[].documents документа з documentType: contractSigned

cancelledДоговір скасованоpending

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

За умови дискваліфікації Аварда із active → unsuccessful

Для того, щоб дискваліфікувати Учасника з причини того, що НЕ підписано договір, необхідно надіслати запит на зміну статуса Аварда active → unsuccessful (логка описана в статусі Аварду)


Документи контракту (contracts.documents)

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

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

Публічність
contractSignedПідписаний договірSigned contract

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

Так

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

Так
contractAnnexeДодатки до договоруContract annexe

Додатки до договору

Ні

Так
contractNoticeПовідомлення про договірContract notice

Повідомлення про договір

Ні


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

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

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

Порядок розміщення Авардів важливий!

Логіка формування порядку Awards:

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

...

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

Приклади

Для кожного Аварда, який отримав статус pending ЦБД генерується протокол.

...

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

...

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

Визначення умовного переможця

Умовний переможець визначається в двох випадках:

...

Власнику Аварда у статусі pending_admission має бути доступна можливість надіслати запит, в якому вказати обсяг, на який він погоджується і готовий купити (quantity), але цей обсяг не може має бути менше >= procedure.minimalPart і більше за <=  за нерозподілений залишок.

Якщо обсяг,що передає "Умовний переможець" поза діапазоном, то ЦБД повертає валідаційну помилку.

...

  • Чи завершився qualificationPeriod.endDate?
    • якщо "ні", то для першого у списку Аварду у статусі pending_waiting відбувається перевірка:
      • Якщо обсяг першого у списку Аварду у статусі pending_waiting дорівнює чи менше нерозподіленого залишку ТА дорівнює чи більше Мін частки, що вказав Організатор при публікації, то цей Авард автоматично змінює свій статус на pending.
      • Якщо обсяг першого у списку Аварду у статусі pending_waiting більше нерозподіленого залишку чи менше Мін частки, то Авард залишається в статусі pending_waiting.pending_waiting.


Дискваліфікація учасника

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

Є можливість дискваліфікувати Awards[], які мають статус pending або active

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

  1. Вказати причину дискваліфікації значенням із словника basicSellTerminationReason
  2. Завантажити в Авард документ rejectionProtocol АБО act
  3. Надіслати запит на зміну Awards[].status → unsuccessful


Anchor
examples
examples
ПРИКЛАДИ:

Назва в прикладахшлях в API
Організаторprocedure.sellingEntity.*
Обсягprocedure.items[0].quantity
Мін цінаprocedure.value.amount
Мін часткаprocedure.minimalPart
Учасникprocedure.bids[]
Обсяг пропозиціїprocedure.bids[*].quantity
Ціна пропозиціїprocedure.bids[*].value

...

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


Умови завершення аукціону

Завершення аукціону (переведення у статус complete)

Організатор має можливість завершити аукціон у разі підтвердження або дискваліфікації учасників, які не пройшли кваліфікацію (всі Awards знаходяться у статусі active, unsuccessful, cancelled). Після завершення роботи із договором з кожним переможцем, Замовник аукціону натискає на кнопку “Завершити аукціон”. Після чого процедура змінює статус на complete.


Модель

цінова пропозиціяMin bid valuetrue

Організатор НЕ передає це поле. При публікації процедури автоматично генерується, як:

"currency": == value.currency
"amount": 0.01

basicSell.

basicSellMultiAwardsProcedure

  typereadOnlyОбовʼязково передавати при публікації процедуриx-legalNameUax-legalNameEnКоментар
owner  stringtrue
Ідентифікатор майданчикаBroker identifier
ownerToken

string($uuid)true



_id

stringtrue
Внутрішній ідентифікатор аукціонуID
datePublished  string($date-time)true
Дата публікації процедуриPublished date
dateModified  string($date-time)true
Остання дата зміни процедуриProcedure date modified
auctionId  stringtrue
Ідентифікатор аукціонуAuction IDBSM
disqualifiedBids  

list[]

string

true
Раніше дискваліфікованіPreviously disqualified

логіку робили для BSE/BSD тут

необхідно таку ж логіку для BSM

previousAuctionId  string

Номер попереднього аукціонуPrevious auction Idpattern: ^(BS[EDMW][0-9]{3}-UA-[0-9]{8}-[0-9]{5}|[a-zA-Z]{2}-[a-zA-Z]{2}-[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{6}-[0-9])$
sellingMethod  string
+Тип процедуриProcedure type

basicSell-multiAwards

basicSell-multiAwards-ultra-fast

basicSell-multiAwards-fast

basicSell-multiAwards-fast-manual

basicSell-multiAwards-fast-auction-manual-qualification

basicSell-multiAwards-fast-auction-prod

basicSell-multiAwards-initial-auction

basicSell-multiAwards-initial-qualification

basicSell-multiAwards-initial-qualification-prod

basicSell-multiAwards-initial-qualification-fast

basicSell-multiAwards-initial-auction-manual

priceTrend  

string

true
  

поле заповнюється автоматично ЦБД, як ascending

Enum:[descending,ascending]

sellingEntity  

model

base.Organization


+Інформація про замовника аукціонуOrganizer informationВикористовуємо готову модель із basicSell-english

name

model

base.multiLang



Повна юридична назва організації або ПІБLegal name or Full Name

identifier

model

base.Identifier


+Ідентифікатори організації або особиIdentifierВикористовуємо готову модель із basicSell-english


schemestring
+Ідентифікатори організаціїID type

Обирається одне значення зі словників:
https://procedure-sandbox.prozorro.sale/api/classifiers/identifiers
https://procedure-sandbox.prozorro.sale/api/classifiers/ua_identifiers



legalName

model

base.multiLang


+Повна юридична назва організаціїLegal nameДля публікації процедури обовʼязково заповнено legalName.uk_UA


idstring
+Код ЄДРПОУ або ІПН або паспортLegal ID

address

model

anyOf → base.Address

               base.AddressUa


+АдресаAddressВикористовуємо готову модель із basicSell-english


countryName

model

base.multiLang


+КраїнаCountry

uk_UA - Для публікації процедури обовʼязково для заповнення



region

model

base.multiLang


+ОбластьRegion

uk_UA - Для публікації процедури обовʼязково для заповнення



locality

model

base.multiLang


+Населений пунктLocalityuk_UA -Для публікації процедури обовʼязково для заповнення


streetAddress

model

base.multiLang


+АдресаAddressuk_UA - Для публікації процедури обовʼязково для заповнення


postalCodestring

Поштовий індексZIP codepattern: ^[0-9]{5}$

representativeInfo string

Інформація щодо підтвердження повноваженьRepresentative information

contactPoint 

model

base.ContactPoint


+Контактна особаMain contactВикористовуємо готову модель із basicSell-english


name

model

base.multiLang


+ПІБMain contact nameuk_UA - Для публікації процедури обовʼязково для заповнення


emailstring($email)
+Адреса електронної пошти
Main contact e-mail


telephonestring
+Номер телефонуPhone number


faxNumberstring

Номер факсуFax number


urlstring($uri)

Веб адресаWebsite
lotId
 string
+Номер лотуLot number
title
 

model

base.multiLang


+Заголовок аукціону
uk_UA - Для публікації процедури обовʼязково для заповнення
description
 

model

base.multiLang


+Опис аукціону
uk_UA - Для публікації процедури обовʼязково для заповнення
accessDetails

model

base.multiLang



Порядок ознайомлення з майном, час і місце проведення огляду об’єктаAuction access details
bankAccounts
 

model

basicSell.BankAccountsByType


+Банківські рахункиBank accounts
Використовуємо готову модель із basicSell-english
При публікації обов'язковоодинбанківськийрахунокзтипом guarantee івалютою UAH. Рахунківдлякожноготипув UAH/USD/EUR можебутибезліч.

accountType 

 



Тип рахункуAccount type
Enum: registrationFee, guarantee, other, payment ]

accounts 

 



РахунокAccount
Використовуємо готову модель із basicSell-english
x_documentRequirements

model

base.multiLang



Перелік та вимоги до оформлення документівDocument requirements
x_additionalInformation
 

model

base.multiLang



Додаткові відомостіOther requirements and additional information
value
 

model

ValueWithTax


+Мінімальна ціна за одиницю обсягуStart lot price
 currency 

string


+ВалютаCurrency

Enum: [UAH, USD, EUR]

 amount 

number($float)


+СумаAmount
 valuePer 

model

base.Unit

true
Одиниця Одиниці виміруMeasure unit

default: заповнюємо значенням із procedure.items[0].unit

P.S.: зараз не даємо можливості редагувати це поле Організатору. Завжди дорівнює procedure.items[0].unit

Організатор може передати інше значення за потребиАле в майбутньому може розблокуємо це поле і дамо можливість Організатору передавати щось відмінне від procedure.items[0].unit

(Наприклад, в REM ціна була за KWH, хоча items[].unit = KWT)

Вказані одиниці ніяк не впливають на розрахунки!
Тобто, якщо Організатор реалізує Тонни, а ціну вказує за Кг, то коректного автоматичного розрахунку ціни НЕ буде.

 valueAddedTaxIncluded 

boolean



ПодатокTax

default: true

Організатор може передати інше значення за потреби

valueAddedTaxCharged  

boolean



На фінальну суму нараховується ПДВValue added tax charged

default: false

Організатор може передати інше значення за потреби

discount  

model

base.Discount



ЗнижкаDiscount

Використовуємо готову модель із basicSell-english

guarantee
 

model

base.Value


+Гарантійний внесокGuarantee 

Використовуємо готову модель із basicSell-english

minimalStep

model

base.Value


+Розмір кроку аукціонуMinimal Step

Організатор передає значення.

P.S.: В Регламенті ЕТС вказано, що крок має бути від 1 до 10% від стартової ціни. Але на ЦБД ми такого обмеження не робимо. Його немає і в BSE

 currency

string

true ВалютаCurrency

default: == value.currency

 amount
number($float)true СумаAmount

default: 0.01

minimalPart

number($float) +Мінімальна часткаMinimal part

minimum:  01
example: 11.1126

x-strict: 4

minNumberOfQualifiedBids
 

integer($int64)



Мінімальна кількість заяв учасниківMinimal number of bids

default: 2

Організатор може передати значення 1 за потреби

minimum: 1
maximum: 2

tenderAttempts
 

integer($int64)



Лот виставляєтьсяAttempt number

default: 1

minimum: 1

items[]
 

list[]

model

basicSell-multiAwards.Item



Склад лотаLot composition

МАЄ БУТИ МОЖЛИВІСТЬ ДОДАТИ ТІЛЬКИ ОДИН item В МАСИВ items[] !
НЕ МОЖЕ БУТИ ДЕКІЛЬКА items в items[]

 id 

string

true
Внутрішній ідентифікатор обʼєктаItem ID

 

 description 

model

base.multiLang


+Опис лотаItem description

uk_UA - Для публікації процедури обовʼязково для заповнення

 classification 

model

Classification


+КласифікаторClassification

 

 
scheme

string


+
Схема класифікатораItem classification scheme

Enum: [CAV]


 
description

model

base.multiLang

true
Опис коду классифікатораClassification ID


 
id

string


 +Код классифікатораClassification ID

Можливість обрати тільки один із:

  • 03000000-1 Сільськогосподарська, фермерська продукція, продукція рибальства, лісівництва та супутня продукція та всі вкладені коди
  • 09000000-3 Нафтопродукти, паливо, електроенергія та інші джерела енергії та всі вкладені коди
  • 14000000-1 Гірнича продукція, неблагородні метали та супутня продукція та всі вкладені коди
  • 15000000-8 Продукти харчування, напої, тютюн та супутня продукція та всі вкладені коди
  • 18000000-9 Одяг, взуття, сумки та аксесуари та всі вкладені коди
  • 19000000-6 Шкіряні та текстильні, пластмасові та гумові матеріали та всі вкладені коди
  • 22000000-0 Друкована та супутня продукція та всі вкладені коди
  • 24000000-4 Хімічна продукція та всі вкладені коди
  • 44000000-0 Конструкції та конструкційні матеріали; допоміжна будівельна продукція (крім електроапаратури) та всі вкладені коди
 unit 

model

base.Unit


 +Одиниці виміру обʼєктаItem unit

Використовуємо готову модель із basicSell-english

словник https://procedure.prozorro.sale/api/classifiers/unitCode
Обов'язково вказувати, код одиниці виміру
P.S.: Тонни - це TNE

При публікації доступно тільки:

  • BX - ящик
  • D64 - блок
  • E50 - одиниця
  • GRM - грам
  • H87 - штуки
  • KGM - кілограм
  • LTR - літр
  • MTQ - метри кубічні
  • RM- пачка
  • TNE - тонни


 
code

string


 +Код одиниці виміруUnit code
 
name

model

base.multiLang

true Назва одиниці виміруItem unit name

Автозаповнюється значенням із словника в залежності від значення unit.code

 quantity 

number($float)

  +Кількість одиницьItem quantity

minimum: 0
example: 11.1126

x-strict: 4

 address 

model

base.AddressUa

  +МісцезнаходженняItem address

Використовуємо готову модель із basicSell-english


P.S.: Поставив "+" в "обовʼязково для заповнення, бо класифікатори, які використовуютьсі в цій процедурі вимагають заповннення адреси

 additionalClassifications[] 

list[]

model

basicSell.AdditionalClassification

  Додатковий класифікаторItem additional Classification ID

Використовуємо готову модель із basicSell-english

Вказання додаткового класифікатора Не обовʼязкове при публікації процедури

  scheme

string

  Схема додаткового класифікаторуItem additional classification schemeEnum: [CPVS,CVZU]
  description

model

base.multiLang

 true Опис додаткового класифікаторуItem additional classification description

 Автозаповнюється в залежності від additionalClassification.id

   id

 string

  Код додаткового класифікатору
Item additional classification IDЗначення із словника CPVS або CVZU обирає Організатор при публікації
 location 

model

base.Location

  КоординатиLocationВикористовуємо готову модель із basicSell-english
  latitude

string

  ШиротаLatitude
  longitude

string

  ДовготаLongitude
  elevation

string

  ВисотаElevation
 basicSellItemType 

string

    

Використовуємо логіку із basicSell-english

P.S.: але для Класифікаторів, які доступні в цій процедурі нічого тут генеруватися не буде, а класифікатори, для яких тут генерується значення не використовуються в цій процедурі

 itemProps[] 

model


  Технічні характеристикиTechnical characteristics

Використовуємо логіку із basicSell-english

anyOf →

basicSell.LandProps
basicSell.RealEstateProps
basicSell.JointPropertyComplexProps
basicSell.VehicleProps

P.S.: але для Класифікаторів, які доступні в цій процедурі нічого тут генеруватися не буде, бо класифікатори, для яких тут генерується значення не використовуються в цій процедурі


registrationDetails

model

base.RequiredRegistrationDetails



Інформація щодо реєстраціїRegistration detailsВикористовуємо логіку із basicSell-english


registrationStatusstring

Стан державної реєстрації об''єктуState of official registration of the registry


registrationIDstring

Номер записуRegistration ID


registrationDatestring

Дата реєстраціїRegistration date
isPerishable
 boolean

Майно, що швидко псуєтьсяPerishable property

Використовуємо логіку із basicSell-english

default: false

!!! Якщо Організатор при створенні процедури обрав Основний класифікатор (чи вкладені в них):
03000000-1 – Сільськогосподарська, фермерська продукція, продукція рибальства, лісівництва та супутня продукція
15000000-8 – Продукти харчування, напої, тютюн та супутня продукція та всі вкладені коди

В інших випадках віддавати валідаційну помилку при публікації Процедури, що обраний класифікатор не дозволяє встановити параметр isPerishable: true

 documents[]  

model

base.Documents

    

Використовуємо логіку із basicSell-english

 bids[]  

model

basicSell-multiAwards.Bid

  Заява на участь Bid

 

 owner 

string

 true Ідентифікатор майданчика Broker ID

 

 ownerToken 

string($uuid)

 true   

 

 id 

string

 true Ідентифікатор заяви на часть Bid ID

 

 bidders[] 

model

base.Organization

  Інформація учасника Bidder info

 Використовуємо логіку із basicSell-english

  name

model

base.multiLang

true Повна юридична назва організації або ПІБLegal name or Full Name

Автозаповнюється автоматично із identifier.legalName.*

  identifier

model

base.Identifier

  Ідентифікатори організації або особиIdentifier

scheme*

string
x-dictionaries: List [ "identifiers", "ua_identifiers" ]

x-legalNameUa: Ідентифікатори організації

x-legalNameEn: ID type

Обирається одне значення зі словників:
https://procedure-sandbox.prozorro.sale/api/classifiers/identifiers
https://procedure-sandbox.prozorro.sale/api/classifiers/ua_identifiers


legalName*

model

base.MultiLang


id*

string
x-legalNameUa: Код ЄДРПОУ або ІПН або паспорт

x-legalNameEn: ID


Обовʼязкові поля для активації Біда

  address

model

anyOf -> base.Address

OR baseAddressUa

  АдресаAddress

Обовʼязкові поля для активації Біда:

countryName

region

locality

streetAddress

  representativeInfo

string

  Інформація щодо підтвердження повноваженьRepresentative information
  contactPoint

model

base.ContactPoint

  Контактна особаMain contact

Обовʼязкові поля для активації Біда

name

email

telephone

 datePublished string($date-time)true Дата заяви на участь Bid date

 

 dateModified 

 string($date-time)

true Остання дата редагування ставкиBid modified date

 

 status 

 string

  Статус заяви на участьBid status

 Enum:[draft, active, deleted, inactive]

 value 

model

  Цінова пропозиція за одиницю обсягуPrice per unit

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

  currency

string

  ВалютаCurrency

Enum:[ UAH, USD, EUR ]

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

  amountnumber($float)  СумаAmount

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

 documents[]

 

model

base.Documents

  Документи до заяви про участьBid documents

Використовуємо логіку із basicSell-english

documentOf: bid

documentType: [ commercialProposal, x_passport, x_IPN, x_tenderersRegisterExtract, qualificationDocuments, eligibilityDocuments, digitalSignature, auctionProtocol ]

 participationUrl 

 string

true Веб-адреса для участі в аукціоніBidder participation link

 

 order

  integer($int64)

true   

Використовуємо логіку із basicSell-english

 quantity 

 number($float)

 +Бажаний обсяг активуBid quantity

minimum: 0
example: 11.1126

x-strict: 4

 inactiveBidDate string($date-time)true Дата деактивації заяви на участьDeactivation date

Використовуємо логіку із basicSell-english

 initialValueAmount 

number($float)

true Початкова ставкаStart bid amount

Використовуємо логіку із basicSell-english

questions[]  

model

base.Questions

  Запитання до аукціонуQ&A

Використовуємо логіку із basicSell-english

awards[]  

model

  Обʼєкт кваліфікаціїAward

 

 id 

string

true ідентифікатор обʼєкта кваліфікаціїAward ID

 

 title 

model

base.multiLang

  Назва обʼєкта кваліфікаціїAward title


 description 

model

base.multiLang

  Опис обʼєкта кваліфікаціїAward description


 status 

string

   СтатусStatus

Enum: [pending, pending_waiting, pending_admission, active, unsuccessful, cancelled]

 terminationReason string  Причина дискваліфікаціїTermination Reason

 dict: basicSellTerminationReason

 datePublished string($date-time) true Дата створенняAward published date

 

 value 

model

base.Value

  Цінова пропозиція за одиницю обсягуAward price per unit

 

  currencystring

ВалютаCurrencyEnum:[ UAH, USD, EUR ]
  amountnumber($float)

СумаValue
 buyers[] 

model

base.Organization



Дані учасникаAward buyer info Використовуємо логіку із basicSell-english
  name

model

base.multiLang



Повна юридична назва організації або ПІБLegal name or Full Name
  identifier

model

base.Identifier



Ідентифікатори організації або особиIdentifier
  address

model

base.Address

base.AddressUa



АдресаAddress
  representativeInfo

string



Інформація щодо підтвердження повноваженьRepresentative information
  contactPoint

model

base.ContactPoint



Контактна особаMain contact
 items[] 
    

Поля копіюються із procedure.items[]

  id

string

true
Внутрішній ідентифікатор обʼєктаItem ID

копіюється id айтема із процедури

  description

model

base.multiLang



Опис лотаItem description

копіюється description із item-а процедури

  classification

model

Classification



КласифікаторClassification

копіюється classification із item-а процедури

  unit
  Одиниця виміру Unit

копіюється unit із item-а процедури

  address


    копіюється address із item-а процедури


  itemProps[]





копіюється itemProps[] із item-а процедури

  additionalClassifications[]





копіюється additionalClassifications[] із item-а процедури
 quantity 

number($float)

  Бажаний обсяг активуAward quantity

копіюється із повʼязаного Біда: bids[].quantity



 totalCost 

model

base.Value

true Цінова пропозиція за бажаний обсягTotal cost

Розраховується тільки для Авардів, які набувають статус pending і не змінюється при зміні статуса на інший.

== award.quantity * award.value.amount

  currencystringtrue ВалютаCurrency

== award.value.currency

  amountnumber($float)true СумаAmount

== award.quantity * award.value.amount

 documents[] 

model

Documents

  Документи до авардуAward documents

documentOf: award

documentType:[rejectionProtocol, auctionProtocol, act, digitalSignature] 

 dateModified 

string($date-time)

  Дата зміни авардуAward date modified

 

 bidId 

string

  Ідентифікатор заяви на участь учасника аукціону Bid id

 

 signingPeriod 

model

base.Period

  Період підписання договоруSigning period

 

 verificationPeriod 

model

base.Period

  Період підписання протоколуVerification period

 

 admissionPeriod 

model

base.Period



Період прийняття рішення щодо набуття статусу переможцяAdmission periodгенерується для Аварду, що набуває статусу pending_admission
timer

string($date-time)true



archiveId

stringtrue



contracts[]

model

basicSell-multiAwards.Contract



ДоговірContract

id
stringtrue
Внутрішній ідентифікатор договруContract Id

awardId
stringtrue
Ідентифікатор переможцяAward id

contractNumber
string

Номер договоруContract number

title

model

base.multiLang



Назва договоруContract title

description

model

base.multiLang



Опис договоруContract description

value

model

base.Value



Вартість за одиницю обсягуContract value per unit


currency




ВалютаCurrency


amount




СумаValue

totalCost

model

base.Value



Вартість за бажаний обсягContract value per quantityкопіюється із повʼязаного Award

contractTotalValue

model

base.Value



Заключна вартість договоруTotal contract's value


currency




ВалютаCurrency


amount




СумаValue

items[]





копіюється із повʼязаного Award в тій самій структурі

buyers[]





копіюється із повʼязаного Award в тій самій структурі

status



СтатусStatusEnum:[pending,active,cancelled]

dataSigned



Дата підписання договоруContract date signed

datePublished



Дата створення об'єкта договоруContract's creation date

dateModified



Остання дата редагування договоруContract's modified date

documents[]

model

base.Document



Документи договоруContract documents

documentOf: contract

documentType: [contractSigned, contractAnnexe, contractNotice, digitalSignature]


contractTime

model

base.LifeTime



Строк дії договоруContract's terms

 dateFromstring($date-time)

Період зDate from

 dateTillstring($date-time)

Період доDate till
inactivationDate 
string($date-time)

Дата деактивації заяви на участьInactive bid dateВикористовуємо логіку із basicSell-english
rectificationPeriod

model

base.Period

true
Період редагуванняRectification periodВикористовуємо логіку із basicSell-english
enquiryPeriod

model

base.Period

true
Період відповідейEnquiry period Використовуємо логіку із basicSell-english
tenderPeriod

model

base.Period

true
Період прийняття заяв на участьTender period Використовуємо логіку із basicSell-english
auctionPeriod

model

base.Period

true
АукціонAuction Використовуємо логіку із basicSell-english
qualificationPeriod

model

base.Period

true
Період кваліфікаціїQualification period Використовуємо логіку із basicSell-english
questionPeriod

model

base.Period

true
Період запитаньQuestion period Використовуємо логіку із basicSell-english
status

 true
СтатусStatus

Enum: [active_tendering, active_auction, active_qualification, active_awarded, complete, unsuccessful, cancelled]

cancellations[]

model

base.Cancellation



Скасування аукціонуAuction cancelleationВикористовуємо логіку із basicSell-english
 id

string

true
Ідентифікатор об'єкта скасуванняAucton cancellation ID 
 reason

model

base.multiLang



Причина скасування АукціонуCancellation reason 
 documents[]

model

Documents



Документи скасуванняCancellation documents

documentOf: cancellation

documentType: [cancellationDetails, digitalSignature]

 datePublished
string($date-time)

Дата прийняття рішення про скасуванняCancellation date 
registrationFee

model

base.Value



Реєстраційний внесокRegistration feeВикористовуємо логіку із basicSell-english
_remainingQuantity

number

true
Нерозподілений залишокRemaining QuantityАвтогенероване поле, яке відображає кількість нерозподіленого залишку після розрахунку quantityLimit