diff --git a/clearing-parent/backend-api/src/main/resources/meta/data.xml b/clearing-parent/backend-api/src/main/resources/meta/data.xml
index 6390799cf..f072ec37c 100644
--- a/clearing-parent/backend-api/src/main/resources/meta/data.xml
+++ b/clearing-parent/backend-api/src/main/resources/meta/data.xml
@@ -1,5 +1,5 @@
-
+
@@ -152,17 +152,30 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -538,6 +551,7 @@
+
diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.json b/clearing-parent/backend-api/src/main/resources/meta/meta.json
index d48786815..5cef8c7a1 100644
--- a/clearing-parent/backend-api/src/main/resources/meta/meta.json
+++ b/clearing-parent/backend-api/src/main/resources/meta/meta.json
@@ -1,6 +1,6 @@
{
- "version": "3.5.0.27",
+ "version": "3.5.0.28",
"enums": {
@@ -1640,11 +1640,11 @@
}
,
{"code": "companySymbol",
- "field": "id","type": 12,"name": "Тип реквизита","shortname": "Тип реквизита","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "companyId","linkCode": "companySymbol","link": "companySymbols","extends": "companySymbols","ignore": true
+ "field": "id","type": 12,"name": "Тип реквизита","shortname": "Тип реквизита","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "companyId","linkCode": "companySymbol","link": "companySymbols","extends": "companySymbols"
}
,
{"code": "companySymbolValue",
- "field": "id","type": 2,"length": 255,"name": "Значение реквизита","shortname": "Значение реквизита","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "companyId","linkCode": "companySymbolValue","link": "companySymbols","extends": "companySymbols","ignore": true
+ "field": "id","type": 2,"length": 255,"name": "Значение реквизита","shortname": "Значение реквизита","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "companyId","linkCode": "companySymbolValue","link": "companySymbols","extends": "companySymbols"
}
,
{"code": "workflowStatus",
@@ -4741,7 +4741,7 @@
,
"planner": {
- "name": "Расписание",
+ "name": "Расписание на все даты",
"destination": "schedule/planners",
@@ -4996,6 +4996,50 @@
}
]
,"actions":[
+ {"method":"post",
+
+ "destination": "GVER",
+
+ "group": "Общее",
+
+ "name": "Запуск сверки",
+
+ "fields": []
+ }
+ ,
+ {"method":"post",
+
+ "destination": "GRYT",
+
+ "group": "Общее",
+
+ "name": "Подготовка КС к клиринговому дню",
+
+ "fields": []
+ }
+ ,
+ {"method":"post",
+
+ "destination": "LOCM",
+
+ "group": "Обмен с интеграционными модулями",
+
+ "name": "Загрузка участников",
+
+ "fields": []
+ }
+ ,
+ {"method":"post",
+
+ "destination": "LOSC",
+
+ "group": "Обмен с интеграционными модулями",
+
+ "name": "Загрузка инструментов",
+
+ "fields": []
+ }
+ ,
{"method":"post",
"destination": "GALB",
@@ -5020,35 +5064,6 @@
,
{"method":"post",
- "destination": "SCLR",
-
- "group": "Клиринг",
-
- "name": "Запуск клиринговой сессии",
-
- "confirmation": "section,sessionType",
-
- "fields": [
- {"code": "section",
- "type": 12,"name": "Секция","shortname": "Секция","link": "section","linkCode": "name","linkKeyCode": "code"
- }
- ,
- {"code": "sessionType",
- "type": 12,"name": "Тип клиринговой сессии","shortname": "Тип клиринговой сессии","link": "sessionType","linkCode": "name","linkKeyCode": "code"
- }
- ,
- {"code": "companyId",
- "type": 1,"name": "Наименование инициатора","shortname": "Инициатор","link": "company","linkCode": "shortName","visible": false
- }
- ,
- {"code": "securityId",
- "type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName","visible": false
- }
- ]
- }
- ,
- {"method":"post",
-
"destination": "GTRD",
"group": "Обмен с Торговой системой",
@@ -5082,108 +5097,38 @@
,
{"method":"post",
- "destination": "GRRT",
+ "destination": "SCLR",
- "group": "Формирование реестров и отчетности",
+ "group": "Клиринг",
- "name": "Формирование реестра остатков ценных бумаг",
+ "name": "Запуск клиринговой сессии",
- "fields": []
- }
- ,
- {"method":"post",
+ "confirmation": "section,sessionType",
- "destination": "GBRR",
-
- "group": "Формирование реестров и отчетности",
-
- "name": "Формирование реестра остатков денежных средств",
-
- "fields": []
- }
- ,
- {"method":"post",
-
- "destination": "ADLR",
-
- "group": "Формирование реестров и отчетности",
-
- "name": "Формирование реестра обязательств, допущенных к клирингу",
-
- "fields": []
- }
- ,
- {"method":"post",
-
- "destination": "CDLR",
-
- "group": "Формирование реестров и отчетности",
-
- "name": "Формирование реестра обязательств, прошедших процедуру контроля обеспечения",
-
- "fields": []
- }
- ,
- {"method":"post",
-
- "destination": "GORR",
-
- "group": "Формирование реестров и отчетности",
-
- "name": "Формирование реестра распоряжений, направленных расчетной организации",
-
- "fields": []
- }
- ,
- {"method":"post",
-
- "destination": "GORD",
-
- "group": "Формирование реестров и отчетности",
-
- "name": "Формирование реестра распоряжений, направленных расчетному депозитарию",
-
- "fields": []
- }
- ,
- {"method":"post",
-
- "destination": "EXLR",
-
- "group": "Формирование реестров и отчетности",
-
- "name": "Формирование реестра обязательств, исключенных из клирингового пула",
-
- "fields": []
- }
- ,
- {"method":"post",
-
- "destination": "LBSR",
-
- "group": "Формирование реестров и отчетности",
-
- "name": "Формирование реестра учета обязательств",
-
- "fields": []
- }
- ,
- {"method":"post",
-
- "destination": "ECNR",
-
- "group": "Формирование реестров и отчетности",
-
- "name": "Формирование реестра сделок",
-
- "fields": []
+ "fields": [
+ {"code": "section",
+ "type": 12,"name": "Секция","shortname": "Секция","link": "section","linkCode": "name","linkKeyCode": "code"
+ }
+ ,
+ {"code": "sessionType",
+ "type": 12,"name": "Тип клиринговой сессии","shortname": "Тип клиринговой сессии","link": "sessionType","linkCode": "name","linkKeyCode": "code"
+ }
+ ,
+ {"code": "companyId",
+ "type": 1,"name": "Наименование инициатора","shortname": "Инициатор","link": "company","linkCode": "shortName","visible": false
+ }
+ ,
+ {"code": "securityId",
+ "type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName","visible": false
+ }
+ ]
}
,
{"method":"post",
"destination": "GREP",
- "group": "Формирование реестров и отчетности",
+ "group": "Формирование отчетности",
"name": "Формирование отчетности",
@@ -5196,44 +5141,99 @@
,
{"method":"post",
- "destination": "LOCM",
+ "destination": "GRRT",
- "group": "Обмен с интеграционными модулями",
+ "group": "Формирование реестров",
- "name": "Загрузка участников",
+ "name": "Формирование реестра остатков ценных бумаг",
"fields": []
}
,
{"method":"post",
- "destination": "LOSC",
+ "destination": "GBRR",
- "group": "Обмен с интеграционными модулями",
+ "group": "Формирование реестров",
- "name": "Загрузка инструментов",
+ "name": "Формирование реестра остатков денежных средств",
"fields": []
}
,
{"method":"post",
- "destination": "GVER",
+ "destination": "ADLR",
- "group": "Общее",
+ "group": "Формирование реестров",
- "name": "Запуск сверки",
+ "name": "Формирование реестра обязательств, допущенных к клирингу",
"fields": []
}
,
{"method":"post",
- "destination": "GRYT",
+ "destination": "CDLR",
- "group": "Общее",
+ "group": "Формирование реестров",
- "name": "Подготовка КС к клиринговому дню",
+ "name": "Формирование реестра обязательств, прошедших процедуру контроля обеспечения",
+
+ "fields": []
+ }
+ ,
+ {"method":"post",
+
+ "destination": "GORR",
+
+ "group": "Формирование реестров",
+
+ "name": "Формирование реестра распоряжений, направленных расчетной организации",
+
+ "fields": []
+ }
+ ,
+ {"method":"post",
+
+ "destination": "GORD",
+
+ "group": "Формирование реестров",
+
+ "name": "Формирование реестра распоряжений, направленных расчетному депозитарию",
+
+ "fields": []
+ }
+ ,
+ {"method":"post",
+
+ "destination": "EXLR",
+
+ "group": "Формирование реестров",
+
+ "name": "Формирование реестра обязательств, исключенных из клирингового пула",
+
+ "fields": []
+ }
+ ,
+ {"method":"post",
+
+ "destination": "LBSR",
+
+ "group": "Формирование реестров",
+
+ "name": "Формирование реестра учета обязательств",
+
+ "fields": []
+ }
+ ,
+ {"method":"post",
+
+ "destination": "ECNR",
+
+ "group": "Формирование реестров",
+
+ "name": "Формирование реестра сделок",
"fields": []
}
diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.xml b/clearing-parent/backend-api/src/main/resources/meta/meta.xml
index b08418cf1..72b097b1f 100644
--- a/clearing-parent/backend-api/src/main/resources/meta/meta.xml
+++ b/clearing-parent/backend-api/src/main/resources/meta/meta.xml
@@ -1,6 +1,6 @@
-
+
@@ -367,8 +367,8 @@
-
-
+
+
@@ -1104,7 +1104,7 @@
-
+
@@ -1165,50 +1165,50 @@
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/clearing-parent/db-scripts/src/main/resources/db/DATA.sql b/clearing-parent/db-scripts/src/main/resources/db/DATA.sql
index ea34850e6..67b22776b 100644
--- a/clearing-parent/db-scripts/src/main/resources/db/DATA.sql
+++ b/clearing-parent/db-scripts/src/main/resources/db/DATA.sql
@@ -1,5 +1,5 @@
--- DB version: 3.5.0.26
--- DATA version: 3.5.0.6
+-- DB version: 3.5.0.28
+-- DATA version: 3.5.0.7
/* Dictionaries */
INSERT INTO ALLOWED_DICTIONARY(ID, CODE, NAME) values (1, 'ALWD', 'Разрешено') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
@@ -302,27 +302,53 @@ INSERT INTO REGISTRY_UNIT_DICTIONARY(ID, CODE, NAME) values (3, 'B', 'Забло
INSERT INTO REGISTRY_UNIT_DICTIONARY(ID, CODE, NAME) values (4, 'C', 'Комиссия') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
-INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (1, 'AMPT', 'Денежные средства - на торги') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (1, 'AMAT', 'Денежные средства - на торги') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
-INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (2, 'AMPF', 'Денежные средства - свободные') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (2, 'AMAF', 'Денежные средства - свободные') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
-INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (3, 'AMPB', 'Денежные средства - блокированные') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (3, 'AMAB', 'Денежные средства - блокированные') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
-INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (4, 'TMPT', 'Требования по деньгам - клиринговый пул') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (4, 'TMAT', 'Требования по деньгам - клиринговый пул') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
-INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (5, 'OSPT', 'Обязательства по инструментам - клиринговый пул') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (5, 'OSAT', 'Обязательства по инструментам - клиринговый пул') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
-INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (6, 'OMPT', 'Обязательства по деньгам - клиринговый пул') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (6, 'OMAT', 'Обязательства по деньгам - клиринговый пул') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
-INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (7, 'TSPT', 'Требования по инструментам - клиринговый пул') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (7, 'TSAT', 'Требования по инструментам - клиринговый пул') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
-INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (8, 'CMPT', 'Требования по деньгам - свои') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (8, 'CMAT', 'Требования по деньгам - свои') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
-INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (9, 'LSPT', 'Обязательства по инструментам - свои') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (9, 'LSAT', 'Обязательства по инструментам - свои') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
-INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (10, 'LMPT', 'Обязательства по деньгам - свои') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (10, 'LMAT', 'Обязательства по деньгам - свои') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
-INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (11, 'CSPT', 'Требования по инструментам - свои') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (11, 'CSAT', 'Требования по инструментам - свои') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (12, 'AMBT', 'Денежные средства клиента - на торги') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (13, 'AMBF', 'Денежные средства клиента - свободные') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (14, 'AMBB', 'Денежные средства клиента - блокированные') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (15, 'TMBT', 'Требования по деньгам клиента - клиринговый пул') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (16, 'OSBT', 'Обязательства по инструментам клиента - клиринговый пул') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (17, 'OMBT', 'Обязательства по деньгам клиента - клиринговый пул') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (18, 'TSBT', 'Требования по инструментам клиента - клиринговый пул') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (19, 'CMBT', 'Требования по деньгам - клиента') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (20, 'LSBT', 'Обязательства по инструментам - клиента') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (21, 'LMBT', 'Обязательства по деньгам - клиента') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (22, 'CSBT', 'Требования по инструментам - клиента') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (23, 'DMAT', 'Возврат депозита по деньгам - свои') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+
+INSERT INTO REGISTRY_CODE_DICTIONARY(ID, CODE, NAME) values (24, 'DMBT', 'Возврат депозита по деньгам - клиента') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO REGISTRY_STATUS_DICTIONARY(ID, CODE, NAME) values (1, 'OK', 'Успешно') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
@@ -1011,3 +1037,5 @@ INSERT INTO MARKET(ID, MARKET_TYPE, SECTION, SETTLEMENT_CURRENCY, CODE, NAME, EX
INSERT INTO MARKET(ID, MARKET_TYPE, SECTION, SETTLEMENT_CURRENCY, CODE, NAME, EXCHANGE_ID, DESCRIPTION) values (79, 'SCND', 'FOND', 'RUB', 'DMIC', 'ОФЗИН-Дискретный аукцион', 1, 'ОФЗИН-Дискретный аукцион: Облигации Минфина') ON CONFLICT (ID) DO UPDATE SET MARKET_TYPE = EXCLUDED.MARKET_TYPE, SECTION = EXCLUDED.SECTION, SETTLEMENT_CURRENCY = EXCLUDED.SETTLEMENT_CURRENCY, CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME, EXCHANGE_ID = EXCLUDED.EXCHANGE_ID, DESCRIPTION = EXCLUDED.DESCRIPTION;
INSERT INTO MARKET(ID, MARKET_TYPE, SECTION, SETTLEMENT_CURRENCY, CODE, NAME, EXCHANGE_ID, DESCRIPTION) values (80, 'SCND', 'FOND', 'RUB', 'MMIC', 'ОФЗИН-Торги в режиме выкупа', 1, 'ОФЗИН-Торги в режиме выкупа: Облигации Минфина') ON CONFLICT (ID) DO UPDATE SET MARKET_TYPE = EXCLUDED.MARKET_TYPE, SECTION = EXCLUDED.SECTION, SETTLEMENT_CURRENCY = EXCLUDED.SETTLEMENT_CURRENCY, CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME, EXCHANGE_ID = EXCLUDED.EXCHANGE_ID, DESCRIPTION = EXCLUDED.DESCRIPTION;
+
+INSERT INTO MARKET(ID, MARKET_TYPE, SECTION, SETTLEMENT_CURRENCY, CODE, NAME, EXCHANGE_ID, DESCRIPTION) values (81, 'PRMR', 'MKR', 'RUB', 'MKRS', 'Размещение', 1, 'Размещение: МКР') ON CONFLICT (ID) DO UPDATE SET MARKET_TYPE = EXCLUDED.MARKET_TYPE, SECTION = EXCLUDED.SECTION, SETTLEMENT_CURRENCY = EXCLUDED.SETTLEMENT_CURRENCY, CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME, EXCHANGE_ID = EXCLUDED.EXCHANGE_ID, DESCRIPTION = EXCLUDED.DESCRIPTION;