NopCommerce и почта России. Часть 1. Прописываем области.

Часть 1. Прописываем области.
Это — первая часть серии постов, посвященная настройке CMS на основе NopCommerce для работы с почтой России.
Вносить области рекоменую этим скриптом, это избавит вас в дальнейшем с проблемами по адаптации скриптов к вашему набору областей.

Сам список областей был взят по ссылкам Субъекты Российской Федерации и Federal subjects of Russia

Внимание! Этот скрипт удаляет все предыдущие области России. В случае наличия каких-то адресов, в которых используются области, скрипт не отработает.

Сайт только первоначально настраивается
Если сайт только настраивается и еще не запущен в реальную работу. Можно просто удалить все записи в таблице [Address] или установить столбец [StateProvinceId] таблицы [Address] для всех записей в произвольное значение, например 1.

Сайт находится в работе

В это случае процедура будет сложнее.
  • Комментируем 2 инструкции удаления DELETE в разделе «Очистка старых данных»
  • Запускаем скрипт
  • Когда новые области будут созданы отдельными SQL запросами меняем ID старых областей в таблице Address на ID новых
  • Удаляем старые области из таблиц [StateProvince] и [LocalizedProperty].


Если какие-то изменения в SQL не отображаются на сайте, необходимо нажать «Перезагрузить приложение» в админке. И не забудьте сделать бекап базы данных!


BEGIN TRY

DECLARE @russia_code INT
DECLARE @language_code INT

DECLARE @start_id INT


/*  Получаем коды России и русского языка в таблицах сайта */
SELECT @russia_code = MIN (id) FROM [Country] WHERE [Name] = 'Russia'
SELECT @language_code = MIN (id) FROM [Language] WHERE [Name] = 'Russian'

/* Очистка старых данных */
DELETE FROM [LocalizedProperty] WHERE [LocaleKeyGroup] = 'StateProvince' AND [LocaleKey] = 'Name' AND [LanguageId] = @language_code 
DELETE FROM [StateProvince] WHERE [CountryId] = @russia_code 



/* Создаем временную таблицу и заполняем именами областей и ID для сортировки */

CREATE TABLE #provinces (
	P_Id INT PRIMARY KEY IDENTITY,
	sort_position INT, 
	english_name nvarchar(50), 
	russian_name nvarchar(50))


/* Создаем временную таблицу и заполняем кодами областей и соответствующими номерами магистральных поясов */
INSERT INTO #provinces (sort_position , english_name, russian_name )
	VALUES
	(1, 'Moscow', 'г. Москва'),
	(4, 'Saint Petersburg', 'г. Санкт-Петербург'),
	(7, 'Sevastopol', 'г. Севастополь'),
	(10, 'Adygea, Republic of', 'Адыгея'),
	(20, 'Altai Republic', 'Алтай'),
	(30, 'Bashkortostan, Republic of', 'Башкортостан'),
	(40, 'Buryatia, Republic of', 'Бурятия'),
	(50, 'Dagestan, Republic of', 'Дагестан'),
	(60, 'Ingushetia, Republic of', 'Ингушетия'),
	(70, 'Kabardino-Balkar Republic', 'Кабардино-Балкария'),
	(80, 'Kalmykia, Republic of', 'Калмыкия'),
	(90, 'Karachay-Cherkess Republic', 'Карачаево-Черкесия'),
	(100, 'Karelia, Republic of', 'Карелия'),
	(110, 'Komi Republic', 'Коми'),
	(120, 'Republic of Crimea', 'Крым'),
	(130, 'Mari El Republic', 'Марий Эл'),
	(140, 'Mordovia, Republic of', 'Мордовия'),
	(150, 'Sakha (Yakutia) Republic', 'Саха (Якутия)'),
	(160, 'North Ossetia-Alania, Republic of', 'Северная Осетия — Алания'),
	(170, 'Tatarstan, Republic of', 'Татарстан'),
	(180, 'Tuva Republic', 'Тыва (Тува)'),
	(190, 'Udmurt Republic', 'Удмуртия'),
	(200, 'Khakassia, Republic of', 'Хакасия'),
	(210, 'Chechen Republic', 'Чечня'),
	(220, 'Chuvash Republic', 'Чувашия'),
	(230, 'Altai Krai', 'Алтайский край'),
	(240, 'Zabaykalsky Krai', 'Забайкальский край'),
	(250, 'Kamchatka Krai', 'Камчатский край'),
	(260, 'Krasnodar Krai', 'Краснодарский край'),
	(270, 'Krasnoyarsk Krai', 'Красноярский край'),
	(280, 'Perm Krai', 'Пермский край'),
	(290, 'Primorsky Krai', 'Приморский край'),
	(300, 'Stavropol Krai', 'Ставропольский край'),
	(310, 'Khabarovsk Krai', 'Хабаровский край'),
	(320, 'Amur Oblast', 'Амурская обл.'),
	(330, 'Arkhangelsk Oblast', 'Архангельская обл.'),
	(340, 'Astrakhan Oblast', 'Астраханская обл.'),
	(350, 'Belgorod Oblast', 'Белгородская обл.'),
	(360, 'Bryansk Oblast', 'Брянская обл.'),
	(370, 'Vladimir Oblast', 'Владимирская обл.'),
	(380, 'Volgograd Oblast', 'Волгоградская обл.'),
	(390, 'Vologda Oblast', 'Вологодская обл.'),
	(400, 'Voronezh Oblast', 'Воронежская обл.'),
	(410, 'Ivanovo Oblast', 'Ивановская обл.'),
	(420, 'Irkutsk Oblast', 'Иркутская обл.'),
	(430, 'Kaliningrad Oblast', 'Калининградская обл.'),
	(440, 'Kaluga Oblast', 'Калужская обл.'),
	(450, 'Kemerovo Oblast', 'Кемеровская обл.'),
	(460, 'Kirov Oblast', 'Кировская обл.'),
	(470, 'Kostroma Oblast', 'Костромская обл.'),
	(480, 'Kurgan Oblast', 'Курганская обл.'),
	(490, 'Kursk Oblast', 'Курская обл.'),
	(500, 'Leningrad Oblast', 'Ленинградская область'),
	(510, 'Lipetsk Oblast', 'Липецкая обл.'),
	(520, 'Magadan Oblast', 'Магаданская обл.'),
	(530, 'Moscow Oblast', 'Московская обл.'),
	(540, 'Murmansk Oblast', 'Мурманская обл.'),
	(550, 'Nizhny Novgorod Oblast', 'Нижегородская обл.'),
	(560, 'Novgorod Oblast', 'Новгородская обл.'),
	(570, 'Novosibirsk Oblast', 'Новосибирская обл.'),
	(580, 'Omsk Oblast', 'Омская обл.'),
	(590, 'Orenburg Oblast', 'Оренбургская обл.'),
	(600, 'Oryol Oblast', 'Орловская обл.'),
	(610, 'Penza Oblast', 'Пензенская обл.'),
	(620, 'Pskov Oblast', 'Псковская обл.'),
	(630, 'Rostov Oblast', 'Ростовская обл.'),
	(640, 'Ryazan Oblast', 'Рязанская обл.'),
	(650, 'Samara Oblast', 'Самарская обл.'),
	(660, 'Saratov Oblast', 'Саратовская обл.'),
	(670, 'Sakhalin Oblast', 'Сахалинская обл.'),
	(680, 'Sverdlovsk Oblast', 'Свердловская обл.'),
	(690, 'Smolensk Oblast', 'Смоленская обл.'),
	(700, 'Tambov Oblast', 'Тамбовская обл.'),
	(710, 'Tver Oblast', 'Тверская обл.'),
	(720, 'Tomsk Oblast', 'Томская обл.'),
	(730, 'Tula Oblast', 'Тульская обл.'),
	(740, 'Tyumen Oblast', 'Тюменская обл.'),
	(750, 'Ulyanovsk Oblast', 'Ульяновская обл.'),
	(760, 'Chelyabinsk Oblast', 'Челябинская обл.'),
	(770, 'Yaroslavl Oblast', 'Ярославская обл.'),
	(810, 'Jewish Autonomous Oblast', 'Еврейская АО'),
	(820, 'Nenets Autonomous Okrug', 'Ненецкий  АО'),
	(830, 'Khanty–Mansi Autonomous Okrug – Yugra', 'Ханты-Мансийский АО - Югра'),
	(840, 'Chukotka Autonomous Okrug', 'Чукотский АО'),
	(850, 'Yamalo-Nenets Autonomous Okrug', 'Ямало-Ненецкий АО')

	/* Заполняем список областей */
INSERT INTO [StateProvince]
           ([CountryId]
           ,[Name]
           ,[Published]
           ,[DisplayOrder])
	SELECT    
		@russia_code, 
		english_name, 
		1, 
		sort_position   
	FROM #provinces


SET @start_id = @@IDENTITY - @@ROWCOUNT 

/* Заполняем переводы областей на русский язык*/
INSERT INTO [LocalizedProperty]
           ([EntityId]
           ,[LanguageId]
           ,[LocaleKeyGroup]
           ,[LocaleKey]
           ,[LocaleValue])
	SELECT 
		@start_id + P_ID, 
		@language_code, 
		'StateProvince', 
		'Name', 
		russian_name  
	FROM #provinces

DROP TABLE #provinces

END TRY
BEGIN CATCH 
	SELECT
        ERROR_NUMBER() AS ErrorNumber
        ,ERROR_SEVERITY() AS ErrorSeverity
        ,ERROR_STATE() AS ErrorState
        ,ERROR_LINE() AS ErrorLine
        ,ERROR_MESSAGE() AS ErrorMessage;
END CATCH;

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.