Описание


Пока писалась данная библиотека, а это срок не более одной недели, сервер www.emspost.ru  c со своим сервисом (http://www.emspost.ru/ru/corp_clients/dogovor_docements/api/) был недоступен 2 раза. И в период тестирования, а это два дня, сервис был недоступен один раз. Как Вы понимаете, это неприемлемо для работающих круглосуточно интернет-магазинов, которые получают данные от вышеуказанного сервиса.  Данный факт укрепил мою веру в необходимость библиотеки, дублирующей сервис подсчета стоимости доставки EMS Почта России. Также была потребность в библиотеке, которая бы использовала данный сервис как таковой.

В итоге получилась универсальная  библиотека, которая может в расчетах  использовать собственную базу данных или опираться на данные сервиса www.emspost.ru . Если, по каким-либо причинам сервис www.emspost.ru не работает, то идет обращение к  собственной базе данных. То есть - данные будут получены всегда из одного из двух источников в зависимости от сложившейся  ситуации.
Библиотека расчета стоимости доставки EMS Почта России, может быть использована на любом сайте. Как в качестве калькулятора, который дублирует калькулятор на сайте www.emspost.ru(пример поставляется вместе с библиотекой), так и  в качестве библиотеки для подсчета стоимости доставки в интернет-магазинах. Как пример, была использована известная CMS DataLife Engine, модуль калькулятора Расчета стоимости доставки EMS Почта России для DLE, также доступен для скачивания.

Библиотека расчета стоимости доставки EMS Почта России использует базу данных SQLite3  файл «emspost.db». В случае, если возникла необходимость обновить данные, то меняется данный файл на новый.Использование других баз данных MySQL, MSSQL и др. посчитал для данной задачи излишней.

Файл базы данных SQLite3 – «emspost.db», формируется при помощи класса EmsDBParse из файлов xls, которые были получены из раздела тарифов http://www.emspost.ru/ru/tarifi_sroki/internal/, потом были сохранены в csv и находятся в папке «csv» для дальнейшего парсинга. Файлы не являются идеальными для парсинга, поэтому пришлось делать исправления в ручную и добавлять специальные методы которые исправляют те или иные недостатки при парсинге. В документации, в описании методов подробно указаны проблемы парсинга и какую проблему решает тот или иной метод класса EmsDBParse. Таким образом, при изменении тарифов стоимости доставки EMS Почты России, можно относительно быстро восстановить базу до актуального состояния.

Так как нет файлов, которые бы указывали сроки доставки, то таблица сроков доставки «times» базы данных «emspost.db» формируется при помощи опроса сервиса EMSpost API. Что увеличивает время исполнения скрипта до 20 минут,  поэтому не является удачным решением(производить на локальном компьютере с измененными настройками сервера на время исполнения скрипта). Но так как время доставки, как информация является редко меняемой, то пройдя процедуру один раз, в дальнейшем, можно использовать дамп таблицы «times» который находится в папке «db».

Для работы калькулятора расчета стоимости доставки EMS Почта России достаточно двух классов:
  1. EmsDB Класс работы с базой данных SQLite3 "emspost.db". Использует паттерн Singleton.Осуществляет соединение с базой данных.
  2. EmsPostCalculate Класс работы с базой данных SQLite3 "emspost.db". Создан для рассчетов доставки и времени доставки.