Versions Compared

Key

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

...

Info
titleПриклад

Організатор створює ланцюжок, де передає:

  • Стартова ціна = 100 000 грн
  • Гарантійний внесок = 10 000 грн (згідно нормативки має бути 20 000 грн, але ЦБД не валідує і пропустить такий обʼєкт)
  • Мінімальний крок = 1200 грн (згідно нормативки має бути 1% від Стартової, але ЦБД не валідує і пропустить такий обʼєкт)

Протягом 5 хвилин створилася перша процедура SAE.

Організатор протягом 48 годин редагує в Процедурі SAE:

  • Стартова ціна = 80 000 грн

В обʼєкті SAC залишиться першочергова Стартова ціна 100 000 грн, а в першіій процедурі SAE Організатор змінив на 80 000 грн.

За результатами - Перша процедура SAE НЕ успішна і отримує статус unsuccessful.

ЦБД протягом 5 хвилин, після отримання Першою процедурою статуса unsuccessful автоматично створює другу процедуру SAE

ЦБД автоматично розраховує:

  • Стартова ціна = 40 000 грн (зверніть увагу, що взяли 50% від останньої ціни, а не від першочергової)
  • Гарантійний внесок = 20% від Стартової ціни = 8 000 грн
  • Мінімальний крок = 1% від Стартової ціни = 400 грн

Організатор протягом 48 годин редагує в другій Процедурі SAE:

  • Стартова ціна = 38 000 грн
  • Гарантійний внесок = 7 000 грн

В обʼєкті SAC залишиться першочергова Стартова ціна 100 000 грн і першочерговий Гарантійний внесок 10 000 грн.

За результатами - Друга процедура SAE НЕ успішна і отримує статус unsuccessful.

ЦБД протягом 5 хвилин, після отримання Другою процедурою статуса unsuccessful автоматично створює третью процедуру SAD

ЦБД автоматично розраховує:

  • Стартова ціна = 38 000 грн
  • Гарантійний внесок = 20% від Стартової ціни = 7 600 грн
  • Мінімальний крок = 1% від Стартової ціни = 380 грн

Організатор протягом 48 годин від моменту створення процедури може редагувати Стартову ціну, Гарантійку, Мінімальний крок і інші поля згідно ТЗ процедури.

...

Розрахунок виконується ЦБД автоматично без участі Організатора.

Anchor
guarantee
guarantee
Гарантійний внесок

Info
titleПостанова

гарантійний внесок - сума коштів (

  • 5 відсотків стартової ціни, якщо вона дорівнює або перевищує 250 млн. гривень
, або
  • 20 відсотків стартової ціни, якщо вона є меншою, ніж 250 млн. гривень
), яка вноситься потенційним покупцем активу для забезпечення виконання його зобов’язання щодо участі в аукціоні у вигляді грошових коштів або банківської гарантії. Банківська гарантія може бути надана тільки системно важливими банками, перелік яких визначається Національним банком та за формою, встановленою Національним банком;

Перша процедура

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

Перша процедура

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

Друга та третя процедура

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

...

field namerequired for publishingtypereadOnlyx-legalNameUax-legalNameEncomment
periods+base.PeriodSpecfalseІнформація про періоди аукціонівPeriods info
field nametypenamecomment
periodNamestringx-legalNameUa: Назва періода
x-legalNameEn: Period name

enum:

  • auctionPeriod
  • tenderPeriod
startDatestring($date-time)

x-legalNameUa: Дата та час початку
x-legalNameEn: Start date

endDatestring($date-time)

x-legalNameUa: Дата та час завершення
x-legalNameEn: End date

durationbase.Durationx-legalNameUa: Тривалість періоду
x-legalNameEn: Period duration
nametypecomment
unitstringEnum:
  • b_day
  • c_day
  • hour
  • minute
  • second
quantityinteger($int64)

minimum: 1

При публікації "ланцюжка", ЦБД очікує, що в extraSpecs обовʼязково буде передано обʼєкт для кожної процедури.

Тобто, всього три обʼєкта в extraSpecs, бо процедур в ланцюжку три.

Валідації

На рівні ЦБД необхідно встановити валідації для pipelineMethod: sanctionedAuctionChain:

Для першої процедури приймається значення:

extraSpecs.[0].periods.periodName=="auctionPeriod"

extraSpecs.[0].periods.startDate ==

if value.amount < 250 000 000 (двісті п'ятдесят мільйонів)

then 
ЦБД має приймати тільки значення для extraSpecs.[0].periods[0].startDate в діапазоні  currentDate+25 c_day <= startDate <=  currentDate+35 c_day

ЦБД повинна відхилити запит, якщо знчення extraSpecs.[0].periods[0].startDate, яке передають в запиті на публікацію SAC знаходиться поза цим діапазоном.

else if value.amount >= 250 000 000 (двісті п'ятдесят мільйонів)

then
ЦБД має приймати тільки значення для auctionPeriod.startDate в діапазоні  currentDate+60 c_day <= startDate <=  currentDate+90 c_day

ЦБД повинна відхилити запит, якщо знчення extraSpecs.[0].periods[0].startDate, яке передають в запиті на публікацію SAC знаходиться поза цим діапазоном.

При цьому дата початку аукціону не може припадати на святковий чи вихідний день! 

Для другої процедури приймається значення:

extraSpecs.[1].periods.periodName=="tenderPeriod"

extraSpecs.[1].periods.duration ==

if value.amount < 250 000 000 (двісті п'ятдесят мільйонів)

then 
ЦБД має приймати тільки значення для extraSpecs.[1].periods[0].duration в діапазоні  20 c_day <= duration <=  35 c_day

ЦБД повинна відхилити запит, якщо знчення duration, яке передають в запиті на публікацію SAC знаходиться поза цим діапазоном.

else if value.amount >= 250 000 000 (двісті п'ятдесят мільйонів)

then
ЦБД має приймати тільки значення для extraSpecs.[1].periods[0].duration в діапазоні  30 c_day <= startDate <=  90 c_day

ЦБД повинна відхилити запит, якщо знчення duration, яке передають в запиті на публікацію SAC знаходиться поза цим діапазоном.

Для третьої процедури приймається значення:

extraSpecs.[1].periods.periodName=="tenderPeriod"

extraSpecs.[1].periods.duration ==

if value.amount < 250 000 000 (двісті п'ятдесят мільйонів)

then 
ЦБД має приймати тільки значення для extraSpecs.[2].periods[0].duration в діапазоні  20 c_day <= duration <=  35 c_day

ЦБД повинна відхилити запит, якщо знчення duration, яке передають в запиті на публікацію SAC знаходиться поза цим діапазоном.

else if value.amount >= 250 000 000 (двісті п'ятдесят мільйонів)

then
ЦБД має приймати тільки значення для extraSpecs.[2].periods[0].duration в діапазоні  30 c_day <= startDate <=  90 c_day

ЦБД повинна відхилити запит, якщо знчення duration, яке передають в запиті на публікацію SAC знаходиться поза цим діапазоном.


Приклад для value.amount < 250 000 000 (двісті п'ятдесят мільйонів):

Code Block
"extraSpecs": [
	{
		"periods": [
			{
				"periodName": "auctionPeriod",
				"startDate": "2026-03-20T10:00:00.000000Z"
			}
		]
	},
	{
		"periods": [
			{
				"periodName": "tenderPeriod",
				"duration": [
					{
						"unit": "c_day",
						"quantity": 25
					}
				]
			}
		]
	},
	{
		"periods": [
			{
				"periodName": "tenderPeriod",
				"duration": [
					{
						"unit": "c_day",
						"quantity": 35
					}
				]
			}
		],
		"dutchStep": {
			"dutchStepQuantity": 99
		}
	}
]


dutchStep+base.DutchStepfalseКрок голландського раундуDutch step

Поля dutchStepPercent та dutchStepValue автогенеруються на рівні ЦБД, без можливості внесення змін Організатором
Для поля dutchStepQuantity ЦБД формує дефолтне значення згідно процедури, Організатор має можливість змінити дефолтне значення.

field nametypenamecomment
dutchStepQuantity

integer($int64)

x-legalNameUa: Кількість кроків
x-legalNameEn: Dutch steps quantity
default: 99
maximum: 99

minimum: 1
dutchStepPercent

integer($int64)

x-legalNameUa: Відсоток зниження, %
x-legalNameEn: Percentage reduction, %
default: 1
readOnly: true
dutchStepValuebase.Value

x-legalNameUa: Розмір кроку голландського раунду, грн

x-legalNameEn: Dutch step value

автогеровано, розраховується як 1 % від стартової ціни

currencystring
default: UAH

x-legalNameUa: Валюта

x-legalNameEn: Currency
Enum:
enum: UAH, USD, EUR
amountnumber($float)
example: 10

minimum: 0

x-format: decimal-float

x-legalNameUa: Сума

x-legalNameEn: Amount
 

_specs

1. Коли тільки створено ланцюжок (status: pending), відповідь на запит має містити:

  • Кількість Процедур у ланцюжку - три;
  • Порядковий номер кожної процедури:
    • Для Першої Процедури tenderAttempts == 1
    • Для Другої Процедури tenderAttempts == 2
    • Для Третьої Процедури tenderAttempts == 3
  • Статус кожної Процедури - scheduled;
  • sellingMethod:
    • Перша Процедура - sanctionedAsset-english
    • Друга Процедура - sanctionedAsset-english
    • Третя Процедура - sanctionedAsset-dutch
  • Стартова ціна Об'єкта (value):
    • Перша Процедура - initialProps.value
    • Друга Процедура - 50% від initialProps.value
    • Третя Процедура - 50% від initialProps.value
  • Крок аукціону (minimalStep):
    • Для Першої Процедури - значення, що вказав Організатор при створенні в  initialProps.minimalStep
    • Для Другої Процедури - значення, що дорівнює 1% від value Поточної Другої Процедури.
    • Для Третьої Процедури - значення, що дорівнює 1% від value Поточної Третьої Процедури.
  • Дата проведення аукціону (periods.periodName:auctionPeriod:startDate):
    • Для Першої Процедури це дата, яку вказав Організатор у полі extraSpecs.periods:"auctionPeriod".startDate при створенні ланцюжка
    • Для Другої і Третьої Процедури ця дата не визначена і поле виводити не потрібно.
  • Період між аукціонами (periods.periodName:"tenderPeriod".duration):
    • Для Першої Процедури - відсутній
    • Для Другої і Третьої Процедури значення, що вказав Організатор при створенні ланцюжка у extraSpecs.periods.periodName:"tenderPeriod".duration
  • Розмір гарантійного внеску (guarantee):
    • Для Першої Процедури значення, що Організатор вніс у initialProps.guarantee
    • Для Другої і Третьої Процедури по формулі: initialProps.guarantee == розраховується по формулі, залежить від Стартової ціни. Формули ТУТ

2. Коли створено Першу Процедуру (status: active), відповідь має містити:

  • Кількість Процедур у ланцюжку - три;
  • Порядковий номер кожної процедури (tenderAttempts):
    • Для Першої Процедури tenderAttempts == 1
    • Для Другої Процедури tenderAttempts == 2
    • Для Третьої Процедури tenderAttempts == 3
  • Статус Процедури (status):
    • Перша Процедура - active
    • Друга і Третя Процедура - scheduled
  • sellingMethod (sellingMethod):
    • Перша Процедура - sanctionedAsset-english
    • Друга Процедура - sanctionedAsset-english
    • Третя Процедура - sanctionedAsset-dutch
  • Стартова ціна Об'єкта (value):
    • Перша Процедура - initialProps.value
    • Друга Процедура - 50% від initialProps.value
    • Третя Процедура - 50% від initialProps.value
  • Крок аукціону (minimalStep):
    • Для Першої Процедури - значення, що вказав Організатор при створенні ланцюжка у initialProps.minimalStep
    • Для Другої Процедури - значення, що дорівнює 1% від value Поточної Другої Процедури.
    • Для Третьої Процедури - значення, що дорівнює 1% від value Поточної Третьої Процедури.
  • Дата проведення аукціону (periods.periodName:"auctionPeriod":startDate):
    • Для Першої Процедури це дата, яку вказав Організатор у полі auctionPeriod.startDate при створенні ланцюжка
    • Для Другої і Третьої Процедури ця дата не визначена і поле виводити не потрібно.
  • Період між аукціонами (periods.periodName:tenderPeriod.duration):
    • Для Першої Процедури - відсутній
    • Для Другої і Третьої Процедури значення, що вказав Організатор при створенні ланцюжку у tenderPeriodDuration
  • Розмір гарантійного внеску (guarantee):
    • Для Першої Процедури значення, що Організатор вніс у initialProps.guarantee
    • Для Другої і Третьої Процедури initialProps.guarantee розраховується по формулі, залежить від Стартової ціни. Формули ТУТ
  • auctionID створеної Першої Процедури (relatedEntities)
    • Для першої Процедури вказано
    • Для другої і третьої - ні

3. Коли створено Другу Процедуру (status: active), відповідь має містити:

  • Кількість Процедур у ланцюжку - три;
  • Порядковий номер кожної процедури (tenderAttempts):
    • Для Першої Процедури tenderAttempts == 1
    • Для Другої Процедури tenderAttempts == 2
    • Для Третьої Процедури tenderAttempts == 3
  • Статус Процедури (status):
    • Перша Процедура - unsuccessful
    • Друга Процедура - active
    • Третя Процедура - scheduled
  • sellingMethod (sellingMethod):
    • Перша Процедура - sanctionedAsset-english
    • Друга Процедура - sanctionedAsset-english
    • Третя Процедура - sanctionedAsset-dutch
  • Стартова ціна Об'єкта (value):
    • Перша Процедура - initialProps.value
    • Друга Процедура - 50% від initialProps.value АБО якщо Організатор відредагував в Першій процедурі "Стартову ціну", то необхідно змінити значення на 50% від Стартової ціни Першої процедури (до розробки: це можливо без довгої розробки?)
    • Третя Процедура - 50% від initialProps.value
  • Крок аукціону (minimalStep):
    • Для Першої Процедури - значення, що вказав Організатор при створенні ланцюжка у initialProps.minimalStep
    • Для Другої Процедури - значення, що дорівнює 1% від value Поточної Другої Процедури
    • Для Третьої Процедури - значення, що дорівнює 1% від value Поточної Третьої Процедури
  • Дата проведення аукціону (periods.periodName:"auctionPeriod":startDate):
    • Для Першої Процедури це дата, яку вказав Організатор у полі auctionPeriod.startDate при створенні ланцюжка
    • Для Другої і Третьої Процедури поле виводити не потрібно.
  • Період між аукціонами (periods.periodName:"tenderPeriod".duration):
    • Для Першої Процедури - відсутній
    • Для Другої і Третьої Процедури значення, що вказав Організатор при створенні ланцюжка у tenderPeriod.duration
  • Розмір гарантійного внеску (guarantee):
    • Для Першої Процедури значення, що Організатор вніс у initialProps.guarantee
    • Для Другої Процедури initialProps.guarantee розраховується по формулі, залежить від Стартової ціни. Формули ТУТ (Варто в розрахунок брати Стартову ціну Другої створеної процедури)
    • Для Третьої Процедури initialProps.guarantee розраховується по формулі, залежить від Стартової ціни. Формули ТУТ
  • auctionID створеної Першої Процедури (relatedEntities)
    • Для першої і другої Процедури вказано
    • Для третьої - ні

4. Коли створено Третю Процедуру (status: active), відповідь має містити:

  • Кількість Процедур у ланцюжку - три;
  • Порядковий номер кожної процедури (tenderAttempts):
    • Для Першої Процедури tenderAttempts == 1
    • Для Другої Процедури tenderAttempts == 2
    • Для Третьої Процедури tenderAttempts == 3
  • Статус Процедури (status):
    • Перша Процедура - unsuccessful
    • Друга Процедура - unsuccessful
    • Третя Процедура - active
  • sellingMethod (sellingMethod):
    • Перша Процедура - sanctionedAsset-english
    • Друга Процедура - sanctionedAsset-english
    • Третя Процедура - sanctionedAsset-dutch
  • Стартова ціна Об'єкта (value):
    • Перша Процедура - initialProps.value
    • Друга Процедура - 50% від initialProps.value АБО якщо Організатор відредагував в Першій процедурі "Стартову ціну", то необхідно змінити значення на 50% від Стартової ціни Першої процедури (до розробки: це можливо без довгої розробки?)
    • Третя Процедура - 50% від initialProps.value АБО якщо Організатор відредагував в Другій процедурі "Стартову ціну", то необхідно змінити значення на 50% від Стартової ціни Другої процедури (до розробки: це можливо без довгої розробки?)
  • Крок аукціону (minimalStep):
    • Для Першої Процедури - значення, що вказав Організатор при створенні у initialProps.minimalStep
    • Для Другої Процедури - значення, що дорівнює 1% від value Поточної Другої Процедури.
    • Для Третьої Процедури - значення, що дорівнює 1% від value Поточної Третьої Процедури.
  • Дата проведення аукціону (periods.periodName:"auctionPeriod":startDate):
    • Для Першої Процедури це дата, яку вказав Організатор у полі auctionPeriod.startDate при створенні ланцюжка
    • Для Другої і Третьої Процедури поле виводити не потрібно.
  • Період між аукціонами (periods.periodName:tenderPeriod.duration):
    • Для Першої Процедури - відсутній
    • Для Другої і Третьої Процедури значення, що вказав Організатор при створенні ланцюжка у tenderPeriod.duration
  • Розмір гарантійного внеску (guarantee):
    • Для Першої Процедури значення, що Організатор вніс у initialProps.guarantee
    • Для Другої Процедури initialProps.guarantee розраховується по формулі, залежить від Стартової ціни. Формули ТУТ (Варто в розрахунок брати Стартову ціну Другої створеної процедури)
    • Для Третьої Процедури initialProps.guarantee розраховується по формулі, залежить від Стартової ціни. Формули ТУТ (Варто в розрахунок брати Стартову ціну Третьої створеної процедури)
  • auctionID Першої Процедури, auctionID Другої Процедури і auctionID створеної Третьої Процедури

Приклад:

Code Block
"_specs": {
	"pipeline": {
		
Code Block
"_specs": {
	"pipeline": {
		"stages": [
			{
				"producedEntities": [
					{
						"type": "procedure",
						"_id": "69945eec410e8611f93bb132",
						"objectId": "SAE001-UA-20260320-17748",
						"url": "/api/procedures/69945eec410e8611f93bb132"
					}
				],
				"status": "unsuccessful",
				"name": "sa-english-first",
				"calculatedData": {
					"value": {
						"currency": "UAH",
						"amount": 100000,
						"valueAddedTaxIncluded": true
					},
					"guarantee": {
						"currency": "UAH",
						"amount": 10000
					},
                    "registrationFee": {
						"currency": "UAH",
						"amount": 800
					},
 					"tenderAttempts": 1, 
                    "auctionPeriod": {
						"startDate": "2026-03-20T14:30:31.326000+02:00"
					},
					"sellingMethod": "sanctionedAsset-english",
					"minimalStep": {
						"currency": "UAH",
						"amount": 1001200
					}
				}
			},
			{
				"producedEntities": [
					{
						"type": "procedure",
						"_id": "69945f5d410e8611f93bb134",
						"objectId": "SPE001SAE001-UA-2026021720260417-44432",
						"url": "/api/procedures/69945f5d410e8611f93bb134"
					}
				],
				"status": "active",
				"name": "spsa-english-second",
				"calculatedData": {
					"value": {
						"currency": "UAH",
						"amount": 500,
		",
				"valueAddedTaxIncludedcalculatedData": true
					},{
					"registrationFeevalue": {
						"currency": "UAH",
						"amount": 20050000,
					},
					"sellingMethodvalueAddedTaxIncluded": "smallPrivatization-english-fast",true
					"tenderAttempts": 2},
 					"guarantee": {
						"currency": "UAH",
						"amount": 10010000
					},
					"tenderPeriod": [
						{
	 
                    "registrationFee": {
						"unitcurrency": "b_dayUAH",
							"quantityamount": 344800
						}
					],
					"minimalStepsellingMethod": {
	"sanctionedAsset-english",
					"currencytenderAttempts": "UAH"2,
						"amounttenderPeriod": 5[
						}{
				}
			}"unit": "с_day",
			{
				"producedEntitiesquantity": [25
						{}
					],
					"typeminimalStep": "procedure",{
						"_idcurrency": "69945f5d410e8611f93bb134UAH",
						"objectIdamount": "SPE001-UA-20260217-44432",
		500
					}
				"url": "/api/procedures/69945f5d410e8611f93bb134"
		}
			},
			}{
				"producedEntities": [],
				"status": "activesheduled",
				"name": "spsa-englishdutch-secondfirst",
				"calculatedData": {
					"value": {
						"currency": "UAH",
						"amount": 50050000,
						"valueAddedTaxIncluded": true
					},
 					"registrationFeeguarantee": {
						"currency": "UAH",
						"amount": 20010000
					}, 
                    "registrationFee": {
						"sellingMethodcurrency": "smallPrivatization-english-fastUAH",
						"tenderAttemptsamount": 2,800
					"guarantee": {
	},
					"currencysellingMethod": "UAHsanctionedAsset-dutch",
						"amounttenderAttempts": 100
					}3,
					"tenderPeriod": [
						{
							"unit": "bc_day",
							"quantity": 34435
						}
					],
					"minimalStep": {
						"currency": "UAH",
						"amount": 5500
					}
				}
			}
		]
	}
}




Note
titleПИТАННЯ
  1. Чи будемо відображати сутність "Процес реалізації санкційного активу" на Порталі, Майданчику чи на будь-якому іншому фронті? - На фронті має відображатися період експозиції для майбутніх Процедур, а ця інформація міститься тільки в SAC
  2.  Реєстраційний Реєстраційний внесок поривʼязаний до мін ЗП і ми також його не валідуємо, а віддаємо на Майданчик.
  3. Валідації на Періоди? - так 
  1. Якщо tenderAttempts > 1
    ТА
    value.amount < 250 000 000 (двісті п'ятдесят мільйонів)
    ТО 
    Необхідно відобразити організатору часовий проміжок, коли можна обрати дату початку аукціону (auctionPeriod.startDate). Мінімальна дата початку - на 20 КД, максимальна - на 35 КД
  2. Якщо tenderAttempts > 1
    ТА
    value.amount >= 250 000 000 (двісті п'ятдесят мільйонів)
    ТО
    Необхідно відобразити організатору часовий проміжок, коли можна обрати дату початку аукціону (auctionPeriod.startDate). Мінімальна дата початку - на 30 КД, максимальна - на 90 КД
При цьому дата початку аукціону не може припадати на святковий чи вихідний день!
  1. його не валідуємо, а віддаємо на Майданчик.
  2. Валідації на Періоди? - так, робимо у нас
  3. ендпоінт на мінСтартДейт робимо пізніше окремою таскою.