From b38b23e56bc90e99f0a90e931d27dfe98c491d46 Mon Sep 17 00:00:00 2001 From: Alex Lushpai Date: Fri, 29 Jan 2016 18:04:48 +0300 Subject: [PATCH] v0.3.0 --- Changelog.md | 39 + README.md | 103 ++- admin/controller/module/retailcrm.php | 188 ++++ admin/language/english/module/intarocrm.php | 25 - admin/language/english/module/retailcrm.php | 30 + .../module/{intarocrm.php => retailcrm.php} | 23 +- admin/model/intarocrm/order.php | 19 - admin/model/intarocrm/tools.php | 197 ----- admin/model/retailcrm/custom/.gitkeep | 0 .../retailcrm/history.php} | 332 +------ admin/model/retailcrm/icml.php | 215 +++++ admin/model/retailcrm/order.php | 174 ++++ admin/model/retailcrm/references.php | 138 +++ admin/view/stylesheet/intarocrm.css | 2 - admin/view/stylesheet/retailcrm.css | 2 + .../module/{intarocrm.tpl => retailcrm.tpl} | 69 +- catalog/model/intarocrm/order.php | 19 - catalog/model/retailcrm/order.php | 97 +++ cli/cli_export.php | 3 - cli/cli_history.php | 3 - doc/Changelog.md | 17 - doc/Install.md | 72 -- doc/TODO.md | 6 - .../cron/dispatch.php | 10 +- system/cron/export.php | 3 + system/cron/history.php | 3 + system/library/intarocrm/.gitignore | 2 - system/library/intarocrm/apihelper.php | 231 ----- system/library/intarocrm/composer.json | 28 - system/library/intarocrm/composer.phar | Bin 1016883 -> 0 bytes system/library/retailcrm/CurlException.php | 5 + .../retailcrm/InvalidJsonException.php | 5 + .../library/retailcrm/RetailcrmApiClient.php | 811 ++++++++++++++++++ .../retailcrm/RetailcrmApiResponse.php | 122 +++ .../library/retailcrm/RetailcrmHttpClient.php | 113 +++ system/library/retailcrm/RetailcrmProxy.php | 43 + system/library/retailcrm/bootstrap.php | 99 +++ vqmod/xml/retailcrm_create_order.xml | 40 + 38 files changed, 2309 insertions(+), 979 deletions(-) create mode 100644 Changelog.md create mode 100644 admin/controller/module/retailcrm.php delete mode 100644 admin/language/english/module/intarocrm.php create mode 100644 admin/language/english/module/retailcrm.php rename admin/language/russian/module/{intarocrm.php => retailcrm.php} (52%) delete mode 100644 admin/model/intarocrm/order.php delete mode 100644 admin/model/intarocrm/tools.php create mode 100644 admin/model/retailcrm/custom/.gitkeep rename admin/{controller/module/intarocrm.php => model/retailcrm/history.php} (55%) create mode 100644 admin/model/retailcrm/icml.php create mode 100644 admin/model/retailcrm/order.php create mode 100644 admin/model/retailcrm/references.php delete mode 100644 admin/view/stylesheet/intarocrm.css create mode 100644 admin/view/stylesheet/retailcrm.css rename admin/view/template/module/{intarocrm.tpl => retailcrm.tpl} (50%) delete mode 100644 catalog/model/intarocrm/order.php create mode 100644 catalog/model/retailcrm/order.php delete mode 100644 cli/cli_export.php delete mode 100644 cli/cli_history.php delete mode 100644 doc/Changelog.md delete mode 100644 doc/Install.md delete mode 100644 doc/TODO.md rename cli/cli_dispatch.php => system/cron/dispatch.php (94%) create mode 100644 system/cron/export.php create mode 100644 system/cron/history.php delete mode 100644 system/library/intarocrm/.gitignore delete mode 100644 system/library/intarocrm/apihelper.php delete mode 100644 system/library/intarocrm/composer.json delete mode 100755 system/library/intarocrm/composer.phar create mode 100644 system/library/retailcrm/CurlException.php create mode 100644 system/library/retailcrm/InvalidJsonException.php create mode 100644 system/library/retailcrm/RetailcrmApiClient.php create mode 100644 system/library/retailcrm/RetailcrmApiResponse.php create mode 100644 system/library/retailcrm/RetailcrmHttpClient.php create mode 100644 system/library/retailcrm/RetailcrmProxy.php create mode 100644 system/library/retailcrm/bootstrap.php create mode 100644 vqmod/xml/retailcrm_create_order.xml diff --git a/Changelog.md b/Changelog.md new file mode 100644 index 0000000..47bf1b0 --- /dev/null +++ b/Changelog.md @@ -0,0 +1,39 @@ +Changelog +========= + +####v0.3.0 + +* Расширена библиотека клиента +* Добавлена возможность кастомизации моделей заказа через vqmod +* Устранены мелкие баги, проведен рефакторинг кода. + + +####v0.2.0 + +Общие изменения + +* Код приведен в состоянии совместимости с PHP 5.2 +* Убрана необходимость собирать пакет через composer +* Библиотека api-client-php обновлена до последней версии и добавлена в стандартную поставку +* Переименованы методы, пути и значения ключей конфигурации в связи с ребрендингом +* Временая метка последнего запуска получения истории перенесена в таблицу конфигурации БД + +Выгрузка каталога (ICML) + +* Генерация обновлена в соответствии с последними измениями формата файла выгрузки +* Генерация вынесена в отдельный класс +* Добавлена возможность добавлять подкатегории +* Скорректировано указание активности офера +* Убрана генерация размера офера вследствие кастомизации этого параметра в разных магазинах + +####v0.1.1 +* Устранена ошибка редактирования, при которой терялась часть данных при получении истории из CRM +* Оптимизирован код получения и обработки истории заказов +* Актуализированы переводы + +####v.0.1 +* Реализован интерфейс настроек модуля +* Реализована отправка данных о заказе/клиенте в CRM +* Реализована выгрузка каталога (cron only) +* Реализовано получение данных о заказах, сделанных на стороне CRM (cron only) + diff --git a/README.md b/README.md index 58fbe97..97f3217 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,99 @@ Opencart module -============== +=============== -Opencart module for interaction with [IntaroCRM](http://www.intarocrm.com) through [REST API](http://docs.intarocrm.ru/rest-api/). +Модуль интеграции CMS Openacrt c [RetailCRM](http://retailcrm.ru) -Module allows: +#### Модуль позволяет: -* Send to IntaroCRM new orders -* Configure relations between dictionaries of IntaroCRM and Opencart (statuses, payments, delivery types and etc) -* Generate [ICML](http://docs.intarocrm.ru/index.php?n=Пользователи.ФорматICML) (IntaroCRM Markup Language) for catalog loading by IntaroCRM +* Экспортировать в CRM данные о заказах и клиентах и получать обратно изменения по этим данным +* Синхронизировать справочники (способы доставки и оплаты, статусы заказов и т.п.) +* Выгружать каталог товаров в формате [ICML](http://retailcrm.ru/docs/Разработчики/ФорматICML) (IntaroCRM Markup Language) -#### Documentation +#### Установка -* [Install](doc/Install.md) -* [Changelog](doc/Changelog.md) -* [TODO](doc/TODO.md) +Установите модуль скопировав необходимые файлы в корень сайта + +``` +unzip master.zip +cp -r opencart-module/* /path/to/site/root +``` + +#### Активируйте модуль + +В списке модулей нажмите "Установить" + +#### Настройте параметры интеграции + +На странице настроек модуля укажите URL Вашей CRM и ключ авторизации, после сохранения этих данных укажите соответствия справочников типов доставок, оплат и статусов заказа. + + +#### Выгрузка новых заказов в CRM (для версии opencart 1.5.x.x, для версии 2.0 и старше не требуется) + +##### VQmod + +Скопируйте xml-файл модифицирующий работу моделей _admin/model/sale/order.php_ и _catalog/model/checkout/order.php_ в _/path/to/site/root/vqmod/xml_. + +Для обновления кеша VQmod может потрбоваться удалить файлы _/path/to/site/root/vqmod/vqcache/vq2-admin_model_sale_order.php_ и _/path/to/site/root/vqmod/vqcache/vq2-catalog_model_checkout_order.php_ + +##### Ручная установка + +В файле: + +``` +/catalog/model/checkout/order.php +``` + +Добавьте следующие строки в метод addOrder непосредственно перед языковой конструкцией return: + +```php +$this->load->model('retailcrm/order'); +$this->model_retailcrm_order->sendToCrm($data, $order_id); +``` + +В файле: + +``` +/admin/model/sale/order.php +``` + +Добавьте следующие строки в методы addOrder и editOrder в самом конце каждого метода: + +```php +if (!isset($data['fromApi'])) { + $this->load->model('setting/setting'); + $status = $this->model_setting_setting->getSetting('retailcrm'); + + if (!empty($data['order_status_id'])) { + $data['order_status'] = $status['retailcrm_status'][$data['order_status_id']]; + } + + $this->load->model('retailcrm/order'); + if (isset ($order_query)) { + $this->model_retailcrm_order->changeInCrm($data, $order_id); + } else { + $this->model_retailcrm_order->sendToCrm($data, $order_id); + } +} +``` + +#### Получение измений из CRM + +Для получения изменений и новых данных добавьте в cron следующую запись: + +``` +*/5 * * * * /usr/bin/php /path/to/opencart/system/cron/retailcrm/history.php >> /path/to/opencart/system/logs/cronjob_history.log 2>&1 +``` + +#### Настройка экспорта каталога + +Для периодической выгрузки каталога добавьте в cron следующую запись: + +``` +* */4 * * * /usr/bin/php /path/to/opencart/system/cron/export.php >> /path/to/opencart/system/logs/cronjob_export.log 2>&1 +``` + +В настройках CRM установите путь к файлу выгрузки + +``` +http://myopencartsite.ru/download/retailcrm.xml +``` diff --git a/admin/controller/module/retailcrm.php b/admin/controller/module/retailcrm.php new file mode 100644 index 0000000..8bbe1b0 --- /dev/null +++ b/admin/controller/module/retailcrm.php @@ -0,0 +1,188 @@ +load->model('setting/setting'); + $this->model_setting_setting->editSetting('retailcrm', array('retailcrm_status' => 1)); + } + + public function uninstall() + { + $this->load->model('setting/setting'); + $this->model_setting_setting->editSetting('retailcrm', array('retailcrm_status' => 0)); + } + + public function index() + { + + $this->load->model('setting/setting'); + $this->load->model('setting/extension'); + $this->load->model('retailcrm/references'); + $this->load->language('module/retailcrm'); + $this->document->setTitle($this->language->get('heading_title')); + $this->document->addStyle('/admin/view/stylesheet/retailcrm.css'); + + if ($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) { + $this->model_setting_setting->editSetting('retailcrm', $this->request->post); + $this->session->data['success'] = $this->language->get('text_success'); + $this->redirect($this->url->link('module/retailcrm', 'token=' . $this->session->data['token'], 'SSL')); + } + + $text_strings = array( + 'heading_title', + 'text_enabled', + 'text_disabled', + 'button_save', + 'button_cancel', + 'text_notice', + 'retailcrm_url', + 'retailcrm_apikey', + 'retailcrm_base_settings', + 'retailcrm_dict_settings', + 'retailcrm_dict_delivery', + 'retailcrm_dict_status', + 'retailcrm_dict_payment', + ); + + foreach ($text_strings as $text) { + $this->data[$text] = $this->language->get($text); + } + + $this->data['retailcrm_errors'] = array(); + $this->data['saved_settings'] = $this->model_setting_setting->getSetting('retailcrm'); + + $url = $this->data['saved_settings']['retailcrm_url']; + $key = $this->data['saved_settings']['retailcrm_apikey']; + + if (!empty($url) && !empty($key)) { + + $this->retailcrm = new RetailcrmProxy($url, $key, DIR_SYSTEM . 'logs/retailcrm.log'); + + $this->data['delivery'] = $this->model_retailcrm_references->getDeliveryTypes(); + $this->data['statuses'] = $this->model_retailcrm_references->getOrderStatuses(); + $this->data['payments'] = $this->model_retailcrm_references->getPaymentTypes(); + + } + + $config_data = array( + 'retailcrm_status' + ); + + foreach ($config_data as $conf) { + if (isset($this->request->post[$conf])) { + $this->data[$conf] = $this->request->post[$conf]; + } else { + $this->data[$conf] = $this->config->get($conf); + } + } + + if (isset($this->error['warning'])) { + $this->data['error_warning'] = $this->error['warning']; + } else { + $this->data['error_warning'] = ''; + } + + $this->data['breadcrumbs'] = array(); + + $this->data['breadcrumbs'][] = array( + 'text' => $this->language->get('text_home'), + 'href' => $this->url->link( + 'common/home', + 'token=' . $this->session->data['token'], 'SSL' + ), + 'separator' => false + ); + + $this->data['breadcrumbs'][] = array( + 'text' => $this->language->get('text_module'), + 'href' => $this->url->link( + 'extension/module', + 'token=' . $this->session->data['token'], 'SSL' + ), + 'separator' => ' :: ' + ); + + $this->data['breadcrumbs'][] = array( + 'text' => $this->language->get('heading_title'), + 'href' => $this->url->link( + 'module/retailcrm', + 'token=' . $this->session->data['token'], 'SSL' + ), + 'separator' => ' :: ' + ); + + $this->data['action'] = $this->url->link( + 'module/retailcrm', + 'token=' . $this->session->data['token'], 'SSL' + ); + + $this->data['cancel'] = $this->url->link( + 'extension/module', + 'token=' . $this->session->data['token'], 'SSL' + ); + + + $this->data['modules'] = array(); + + if (isset($this->request->post['retailcrm_module'])) { + $this->data['modules'] = $this->request->post['retailcrm_module']; + } elseif ($this->config->get('retailcrm_module')) { + $this->data['modules'] = $this->config->get('retailcrm_module'); + } + + $this->load->model('design/layout'); + + $this->data['layouts'] = $this->model_design_layout->getLayouts(); + + $this->template = 'module/retailcrm.tpl'; + $this->children = array( + 'common/header', + 'common/footer', + ); + + $this->response->setOutput($this->render()); + } + + public function history() + { + if (file_exists(DIR_APPLICATION . 'model/retailcrm/custom/history.php')) { + $this->load->model('retailcrm/custom/history'); + $this->model_retailcrm_custom_history->request(); + } else { + $this->load->model('retailcrm/history'); + $this->model_retailcrm_history->request(); + } + } + + public function icml() + { + if (file_exists(DIR_APPLICATION . 'model/retailcrm/custom/icml.php')) { + $this->load->model('retailcrm/custom/icml'); + $this->model_retailcrm_custom_icml->generateICML(); + } else { + $this->load->model('retailcrm/icml'); + $this->model_retailcrm_icml->generateICML(); + } + } + + private function validate() + { + if (!$this->user->hasPermission('modify', 'module/retailcrm')) { + $this->error['warning'] = $this->language->get('error_permission'); + } + + if (!$this->error) { + return TRUE; + } else { + return FALSE; + } + } +} diff --git a/admin/language/english/module/intarocrm.php b/admin/language/english/module/intarocrm.php deleted file mode 100644 index b95fcbc..0000000 --- a/admin/language/english/module/intarocrm.php +++ /dev/null @@ -1,25 +0,0 @@ - diff --git a/admin/language/english/module/retailcrm.php b/admin/language/english/module/retailcrm.php new file mode 100644 index 0000000..06385bc --- /dev/null +++ b/admin/language/english/module/retailcrm.php @@ -0,0 +1,30 @@ + + diff --git a/admin/model/intarocrm/order.php b/admin/model/intarocrm/order.php deleted file mode 100644 index 8779f66..0000000 --- a/admin/model/intarocrm/order.php +++ /dev/null @@ -1,19 +0,0 @@ -load->model('setting/setting'); - $settings = $this->model_setting_setting->getSetting('intarocrm'); - $settings['domain'] = parse_url(HTTP_SERVER, PHP_URL_HOST); - - if(isset($settings['intarocrm_url']) && $settings['intarocrm_url'] != '' && isset($settings['intarocrm_apikey']) && $settings['intarocrm_apikey'] != '') { - include_once DIR_SYSTEM . 'library/intarocrm/apihelper.php'; - $order['order_id'] = $order_id; - $crm = new ApiHelper($settings); - $crm->processOrder($order); - } - - } -} -?> \ No newline at end of file diff --git a/admin/model/intarocrm/tools.php b/admin/model/intarocrm/tools.php deleted file mode 100644 index b3d812a..0000000 --- a/admin/model/intarocrm/tools.php +++ /dev/null @@ -1,197 +0,0 @@ -load->language('shipping/' . $extension); - - if ($this->config->get($extension . '_status')) { - $deliveryMethods[$extension.'.'.$extension] = strip_tags($this->language->get('heading_title')); - } - } - } - - return $deliveryMethods; - } - - public function getOpercartOrderStatuses() - { - $this->load->model('localisation/order_status'); - return $this->model_localisation_order_status->getOrderStatuses(array()); - } - - public function getOpercartPaymentTypes() - { - $paymentTypes = array(); - $files = glob(DIR_APPLICATION . 'controller/payment/*.php'); - - if ($files) { - foreach ($files as $file) { - $extension = basename($file, '.php'); - - $this->load->language('payment/' . $extension); - - if ($this->config->get($extension . '_status')) { - $paymentTypes[$extension] = strip_tags($this->language->get('heading_title')); - } - } - } - - return $paymentTypes; - } - - public function generateICML() - { - $string = ' - - - '.$this->config->get('config_name').' - - - - - '; - - $xml = new SimpleXMLElement($string, LIBXML_NOENT |LIBXML_NOCDATA | LIBXML_COMPACT | LIBXML_PARSEHUGE); - - $this->dd = new DOMDocument(); - $this->dd->preserveWhiteSpace = false; - $this->dd->formatOutput = true; - $this->dd->loadXML($xml->asXML()); - - $this->eCategories = $this->dd->getElementsByTagName('categories')->item(0); - $this->eOffers = $this->dd->getElementsByTagName('offers')->item(0); - - $this->addCategories(); - $this->addOffers(); - - $this->dd->saveXML(); - - $downloadPath = DIR_SYSTEM . '/../download/'; - - if (!file_exists($downloadPath)) { - mkdir($downloadPath, 0755); - } - - $this->dd->save($downloadPath . 'intarocrm.xml'); - } - - private function addCategories() - { - $this->load->model('catalog/category'); - - foreach ($this->model_catalog_category->getCategories(array()) as $category) { - $e = $this->eCategories->appendChild($this->dd->createElement('category', $category['name'])); - $e->setAttribute('id',$category['category_id']); - } - - } - - private function addOffers() - { - $this->load->model('catalog/product'); - $this->load->model('catalog/manufacturer'); - $this->load->model('tool/image'); - - $offerManufacturers = array(); - - $manufacturers = $this->model_catalog_manufacturer->getManufacturers(array()); - - foreach ($manufacturers as $manufacturer) { - $offerManufacturers[$manufacturer['manufacturer_id']] = $manufacturer['name']; - } - - foreach ($this->model_catalog_product->getProducts(array()) as $offer) { - - $e = $this->eOffers->appendChild($this->dd->createElement('offer')); - $e->setAttribute('id', $offer['product_id']); - $e->setAttribute('productId', $offer['product_id']); - $e->setAttribute('quantity', $offer['quantity']); - $e->setAttribute('available', $offer['status'] ? 'true' : 'false'); - - /* - * DIRTY HACK, NEED TO REFACTOR - */ - - $sql = "SELECT * FROM `" . - DB_PREFIX . - "product_to_category` WHERE `product_id` = " .$offer['product_id']. ";" - ; - $result = $this->db->query($sql); - foreach ($result->rows as $row) { - $e->appendChild($this->dd->createElement('categoryId', $row['category_id'])); - } - - $e->appendChild($this->dd->createElement('name'))->appendChild($this->dd->createTextNode($offer['name'])); - $e->appendChild($this->dd->createElement('productName')) - ->appendChild($this->dd->createTextNode($offer['name'])); - $e->appendChild($this->dd->createElement('price', $offer['price'])); - - if ($offer['manufacturer_id'] != 0) { - $e->appendChild($this->dd->createElement('vendor')) - ->appendChild($this->dd->createTextNode($offerManufacturers[$offer['manufacturer_id']])); - } - - if ($offer['image']) { - $e->appendChild( - $this->dd->createElement( - 'picture', - $this->model_tool_image->resize( - $offer['image'], - $this->config->get('config_image_product_width'), - $this->config->get('config_image_product_height') - ) - ) - ); - } - - $this->url = new Url(HTTP_CATALOG, $this->config->get('config_secure') ? HTTP_CATALOG : HTTPS_CATALOG); - $e->appendChild($this->dd->createElement('url'))->appendChild( - $this->dd->createTextNode( - $this->url->link('product/product&product_id=' . $offer['product_id']) - ) - ); - - if ($offer['sku'] != '') { - $sku = $this->dd->createElement('param'); - $sku->setAttribute('name', 'article'); - $sku->appendChild($this->dd->createTextNode($offer['sku'])); - $e->appendChild($sku); - } - - if ($offer['weight'] != '') { - $weight = $this->dd->createElement('param'); - $weight->setAttribute('name', 'weight'); - $weightValue = (isset($offer['weight_class'])) - ? round($offer['weight'], 3) . ' ' . $offer['weight_class'] - : round($offer['weight'], 3) - ; - $weight->appendChild($this->dd->createTextNode($weightValue)); - $e->appendChild($weight); - } - - if ($offer['length'] != '' && $offer['width'] != '' && $offer['height'] != '') { - $size = $this->dd->createElement('param'); - $size->setAttribute('name', 'size'); - $size->appendChild( - $this->dd->createTextNode( - round($offer['length'], 2) .'x'. - round($offer['width'], 2) .'x'. - round($offer['height'], 2) - ) - ); - $e->appendChild($size); - } - } - } -} \ No newline at end of file diff --git a/admin/model/retailcrm/custom/.gitkeep b/admin/model/retailcrm/custom/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/admin/controller/module/intarocrm.php b/admin/model/retailcrm/history.php similarity index 55% rename from admin/controller/module/intarocrm.php rename to admin/model/retailcrm/history.php index 5ffa43e..b8a2afa 100644 --- a/admin/controller/module/intarocrm.php +++ b/admin/model/retailcrm/history.php @@ -1,283 +1,55 @@ load->model('setting/setting'); - $this->model_setting_setting->editSetting('intarocrm', array('intarocrm_status'=>1)); - } - - public function uninstall() { - $this->load->model('setting/setting'); - $this->model_setting_setting->editSetting('intarocrm', array('intarocrm_status'=>0)); - } - - public function index() { - - $this->log = new Monolog\Logger('opencart-module'); - $this->log->pushHandler( - new Monolog\Handler\StreamHandler(DIR_LOGS . 'intarocrm_module.log', Monolog\Logger::INFO) - ); - - $this->load->model('setting/setting'); - $this->load->model('setting/extension'); - $this->load->model('intarocrm/tools'); - $this->load->language('module/intarocrm'); - $this->document->setTitle($this->language->get('heading_title')); - $this->document->addStyle('/admin/view/stylesheet/intarocrm.css'); - - if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { - $this->model_setting_setting->editSetting('intarocrm', $this->request->post); - $this->session->data['success'] = $this->language->get('text_success'); - $this->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL')); - } - - $text_strings = array( - 'heading_title', - 'text_enabled', - 'text_disabled', - 'button_save', - 'button_cancel', - 'text_notice', - 'intarocrm_url', - 'intarocrm_apikey', - 'intarocrm_base_settings', - 'intarocrm_dict_settings', - 'intarocrm_dict_delivery', - 'intarocrm_dict_status', - 'intarocrm_dict_payment', - ); - - foreach ($text_strings as $text) { - $this->data[$text] = $this->language->get($text); - } - - $this->data['intarocrm_errors'] = array(); - $this->data['saved_settings'] = $this->model_setting_setting->getSetting('intarocrm'); - - if ($this->data['saved_settings']['intarocrm_url'] != '' && - $this->data['saved_settings']['intarocrm_apikey'] != '' - ) { - - $this->intarocrm = new \IntaroCrm\RestApi( - $this->data['saved_settings']['intarocrm_url'], - $this->data['saved_settings']['intarocrm_apikey'] - ); - - /* - * Delivery - */ - - try { - $this->deliveryTypes = $this->intarocrm->deliveryTypesList(); - } - catch (IntaroCrm\Exception\ApiException $e) - { - $this->data['intarocrm_error'][] = $e->getMessage(); - $this->log->addError( - '[' . - $this->config->get('store_name') . - '] RestApi::deliveryTypesList::Api:' . $e->getMessage() - ); - } - catch (IntaroCrm\Exception\CurlException $e) - { - $this->data['intarocrm_error'][] = $e->getMessage(); - $this->log->addError( - '[' . $this->config->get('store_name') . - '] RestApi::deliveryTypesList::Curl:' . $e->getMessage() - ); - } - - $this->data['delivery'] = array( - 'opencart' => $this->model_intarocrm_tools->getOpercartDeliveryMethods(), - 'intarocrm' => $this->deliveryTypes - ); - - /* - * Statuses - */ - try { - $this->statuses = $this->intarocrm->orderStatusesList(); - } - catch (IntaroCrm\Exception\ApiException $e) - { - $this->data['intarocrm_error'][] = $e->getMessage(); - $this->log->addError( - '[' . - $this->config->get('store_name') . - '] RestApi::orderStatusesList::Api:' . $e->getMessage() - ); - } - catch (IntaroCrm\Exception\CurlException $e) - { - $this->data['intarocrm_error'][] = $e->getMessage(); - $this->log->addError( - '[' . - $this->config->get('store_name') . - '] RestApi::orderStatusesList::Curl:' . $e->getMessage() - ); - } - - $this->data['statuses'] = array( - 'opencart' => $this->model_intarocrm_tools->getOpercartOrderStatuses(), - 'intarocrm' => $this->statuses - ); - - /* - * Payment - */ - - try { - $this->payments = $this->intarocrm->paymentTypesList(); - } - catch (IntaroCrm\Exception\ApiException $e) - { - $this->data['intarocrm_error'][] = $e->getMessage(); - $this->log->addError( - '[' . - $this->config->get('store_name') . - '] RestApi::paymentTypesList::Api:' . $e->getMessage() - ); - } - catch (IntaroCrm\Exception\CurlException $e) - { - $this->data['intarocrm_error'][] = $e->getMessage(); - $this->log->addError( - '[' . - $this->config->get('store_name') . - '] RestApi::paymentTypesList::Curl:' . $e->getMessage() - ); - } - - $this->data['payments'] = array( - 'opencart' => $this->model_intarocrm_tools->getOpercartPaymentTypes(), - 'intarocrm' => $this->payments - ); - - } - - $config_data = array( - 'intarocrm_status' - ); - - foreach ($config_data as $conf) { - if (isset($this->request->post[$conf])) { - $this->data[$conf] = $this->request->post[$conf]; - } else { - $this->data[$conf] = $this->config->get($conf); - } - } - - if (isset($this->error['warning'])) { - $this->data['error_warning'] = $this->error['warning']; - } else { - $this->data['error_warning'] = ''; - } - - $this->data['breadcrumbs'] = array(); - - $this->data['breadcrumbs'][] = array( - 'text' => $this->language->get('text_home'), - 'href' => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'), - 'separator' => false - ); - - $this->data['breadcrumbs'][] = array( - 'text' => $this->language->get('text_module'), - 'href' => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'), - 'separator' => ' :: ' - ); - - $this->data['breadcrumbs'][] = array( - 'text' => $this->language->get('heading_title'), - 'href' => $this->url->link('module/intarocrm', 'token=' . $this->session->data['token'], 'SSL'), - 'separator' => ' :: ' - ); - - $this->data['action'] = $this->url->link('module/intarocrm', 'token=' . $this->session->data['token'], 'SSL'); - - $this->data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'); - - - $this->data['modules'] = array(); - - if (isset($this->request->post['intarocrm_module'])) { - $this->data['modules'] = $this->request->post['intarocrm_module']; - } elseif ($this->config->get('intarocrm_module')) { - $this->data['modules'] = $this->config->get('intarocrm_module'); - } - - $this->load->model('design/layout'); - - $this->data['layouts'] = $this->model_design_layout->getLayouts(); - - $this->template = 'module/intarocrm.tpl'; - $this->children = array( - 'common/header', - 'common/footer', - ); - - $this->response->setOutput($this->render()); - } - - public function order_history() +class ModelRetailcrmHistory extends Model +{ + public function request() { - $this->log = new Monolog\Logger('opencart-module'); - $this->log->pushHandler( - new Monolog\Handler\StreamHandler(DIR_LOGS . 'intarocrm_module.log', Monolog\Logger::INFO) - ); - $this->load->model('setting/setting'); $this->load->model('setting/store'); $this->load->model('sale/order'); $this->load->model('sale/customer'); - $this->load->model('intarocrm/tools'); + $this->load->model('retailcrm/tools'); $this->load->model('catalog/product'); $this->load->model('localisation/zone'); - $this->load->language('module/intarocrm'); + $this->load->language('module/retailcrm'); - $settings = $this->model_setting_setting->getSetting('intarocrm'); + $settings = $this->model_setting_setting->getSetting('retailcrm'); $settings['domain'] = parse_url(HTTP_SERVER, PHP_URL_HOST); - if (isset($settings['intarocrm_url']) && - $settings['intarocrm_url'] != '' && - isset($settings['intarocrm_apikey']) && - $settings['intarocrm_apikey'] != '' - ) { - include_once __DIR__ . '/../../../system/library/intarocrm/apihelper.php'; - $crm = new ApiHelper($settings); - $orders = $crm->orderHistory(); + if (!empty($settings['retailcrm_url']) && !empty($settings['retailcrm_apikey'])) { + $crm = new RetailcrmProxy( + $settings['retailcrm_url'], + $settings['retailcrm_apikey'], + DIR_SYSTEM . 'logs/retailcrm.log' + ); + + $orders = $crm->ordersHistory(); $ordersIdsFix = array(); $customersIdsFix = array(); $subtotalSettings = $this->model_setting_setting->getSetting('sub_total'); $totalSettings = $this->model_setting_setting->getSetting('total'); $shippingSettings = $this->model_setting_setting->getSetting('shipping'); - $delivery = array_flip($settings['intarocrm_delivery']); - $payment = array_flip($settings['intarocrm_payment']); - $status = array_flip($settings['intarocrm_status']); + $delivery = array_flip($settings['retailcrm_delivery']); + $payment = array_flip($settings['retailcrm_payment']); + $status = array_flip($settings['retailcrm_status']); - $ocPayment = $this->model_intarocrm_tools->getOpercartPaymentTypes(); - $ocDelivery = $this->model_intarocrm_tools->getOpercartDeliveryMethods(); + $ocPayment = $this->model_retailcrm_tools->getOpercartPaymentTypes(); + $ocDelivery = $this->model_retailcrm_tools->getOpercartDeliveryMethods(); $zones = $this->model_localisation_zone->getZones(); foreach ($orders as $order) { - if (!isset($order['deleted']) || !$order['deleted']) { + if (empty($order['deleted'])) { $data = array(); - $customer_id = (isset($order['customer']['externalId']) && $order['customer']['externalId'] != 0) + $customer_id = (!empty($order['customer']['externalId'])) ? $order['customer']['externalId'] : '' - ; + ; if (isset($order['externalId'])) { /* @@ -297,12 +69,12 @@ class ControllerModuleIntarocrm extends Controller { 'lastname' => (isset($order['customer']['lastName'])) ? $order['customer']['lastName'] : ' ' - , + , 'email' => $order['customer']['email'], 'telephone' => (isset($order['customer']['phones'][0]['number'])) ? $order['customer']['phones'][0]['number'] : ' ' - , + , 'newsletter' => 0, 'password' => 'tmppass', 'status' => 1, @@ -311,16 +83,16 @@ class ControllerModuleIntarocrm extends Controller { 'lastname' => (isset($order['customer']['lastName'])) ? $order['customer']['lastName'] : ' ' - , + , 'address_1' => $order['customer']['address']['text'], 'city' => isset($order['customer']['address']['city']) ? $order['customer']['address']['city'] : $order['delivery']['address']['city'] - , + , 'postcode' => isset($order['customer']['address']['index']) ? $order['customer']['address']['index'] : $order['delivery']['address']['index'] - , + , ), 'tax_id' => '', 'zone_id' => '', @@ -349,7 +121,7 @@ class ControllerModuleIntarocrm extends Controller { $data['store_id'] = ($this->config->get('config_store_id') == null) ? 0 : $this->config->get('config_store_id') - ; + ; $data['customer'] = $order['customer']['firstName']; $data['customer_id'] = $customer_id; $data['customer_group_id'] = 1; @@ -359,7 +131,7 @@ class ControllerModuleIntarocrm extends Controller { $data['telephone'] = (isset($order['customer']['phones'][0]['number'])) ? $order['customer']['phones'][0]['number'] : ' ' - ; + ; $data['comment'] = isset($order['customerComment']) ? $order['customerComment'] : ''; $data['fax'] = ''; @@ -374,11 +146,11 @@ class ControllerModuleIntarocrm extends Controller { $data['payment_city'] = isset($order['customer']['address']['city']) ? $order['customer']['address']['city'] : $order['delivery']['address']['city'] - ; + ; $data['payment_postcode'] = isset($order['customer']['address']['index']) ? $order['customer']['address']['index'] : $order['delivery']['address']['index'] - ; + ; /* * Country & zone id detection @@ -401,11 +173,11 @@ class ControllerModuleIntarocrm extends Controller { $data['payment_country_id'] = isset($order['customer']['address']['country']) ? $order['customer']['address']['country'] : $order['delivery']['address']['country'] - ; + ; $data['payment_zone_id'] = isset($order['customer']['address']['region']) ? $order['customer']['address']['region'] : $region - ; + ; $data['shipping_country_id'] = $order['delivery']['address']['country']; $data['shipping_zone_id'] = $region; @@ -415,7 +187,7 @@ class ControllerModuleIntarocrm extends Controller { $data['shipping_lastname'] = (isset($order['customer']['lastName'])) ? $order['customer']['lastName'] : ' ' - ; + ; $data['shipping_address_1'] = $order['delivery']['address']['text']; $data['shipping_address_2'] = ''; $data['shipping_company'] = ''; @@ -490,10 +262,10 @@ class ControllerModuleIntarocrm extends Controller { 'value' => isset($order['totalSumm']) ? $order['totalSumm'] : $order['summ'] + $deliveryCost - , + , 'text' => isset($order['totalSumm']) - ? $order['totalSumm'] - : $order['summ'] + $deliveryCost + ? $order['totalSumm'] + : $order['summ'] + $deliveryCost , 'sort_order' => $totalSettings['total_sort_order'] ) @@ -521,39 +293,15 @@ class ControllerModuleIntarocrm extends Controller { } if (!empty($customersIdsFix)) { - $crm->customerFixExternalIds($customersIdsFix); + $crm->customersFixExternalIds($customersIdsFix); } if (!empty($ordersIdsFix)) { - $crm->orderFixExternalIds($ordersIdsFix); + $crm->ordersFixExternalIds($ordersIdsFix); } } else { - $this->log->addNotice( - '['. - $this->config->get('store_name'). - '] RestApi::orderHistory: you need to configure Intarocrm module first.' - ); + $this->log->addNotice('You need to configure retailcrm module first.'); } } - - public function export_icml() - { - $this->load->model('intarocrm/tools'); - $this->model_intarocrm_tools->generateICML(); - } - - private function validate() { - if (!$this->user->hasPermission('modify', 'module/intarocrm')) { - $this->error['warning'] = $this->language->get('error_permission'); - } - - if (!$this->error) { - return TRUE; - } else { - return FALSE; - } - } - - } diff --git a/admin/model/retailcrm/icml.php b/admin/model/retailcrm/icml.php new file mode 100644 index 0000000..e584614 --- /dev/null +++ b/admin/model/retailcrm/icml.php @@ -0,0 +1,215 @@ +load->language('module/retailcrm'); + $this->load->model('catalog/category'); + $this->load->model('catalog/product'); + $this->load->model('catalog/manufacturer'); + + $string = ' + + + '.$this->config->get('config_name').' + + + + + '; + + $xml = new SimpleXMLElement( + $string, + LIBXML_NOENT |LIBXML_NOCDATA | LIBXML_COMPACT | LIBXML_PARSEHUGE + ); + + $this->dd = new DOMDocument(); + $this->dd->preserveWhiteSpace = false; + $this->dd->formatOutput = true; + $this->dd->loadXML($xml->asXML()); + + $this->eCategories = $this->dd + ->getElementsByTagName('categories')->item(0); + $this->eOffers = $this->dd + ->getElementsByTagName('offers')->item(0); + + $this->addCategories(); + $this->addOffers(); + + $this->dd->saveXML(); + + $downloadPath = DIR_SYSTEM . '/../download/'; + + if (!file_exists($downloadPath)) { + mkdir($downloadPath, 0755); + } + + $this->dd->save($downloadPath . 'retailcrm.xml'); + } + + /** + * + */ + private function addCategories() + { + $categories = $this->model_catalog_category->getCategories(array()); + foreach($categories as $category) { + $e = $this->eCategories->appendChild( + $this->dd->createElement( + 'category', $category['name'] + ) + ); + + $e->setAttribute('id', $category['category_id']); + + if ($category['parent_id'] > 0) { + $e->setAttribute('parentId', $category['parent_id']); + } + } + + } + + private function addOffers() + { + $offerManufacturers = array(); + + $manufacturers = $this->model_catalog_manufacturer + ->getManufacturers(array()); + + foreach ($manufacturers as $manufacturer) { + $offerManufacturers[ + $manufacturer['manufacturer_id'] + ] = $manufacturer['name']; + } + + $products = $this->model_catalog_product->getProducts(array()); + + foreach ($products as $offer) { + + $e = $this->eOffers->appendChild($this->dd->createElement('offer')); + $e->setAttribute('id', $offer['product_id']); + $e->setAttribute('productId', $offer['product_id']); + $e->setAttribute('quantity', $offer['quantity']); + + /** + * Offer activity + */ + $activity = $offer['status'] == 1 ? 'Y' : 'N'; + $e->appendChild( + $this->dd->createElement('productActivity') + )->appendChild( + $this->dd->createTextNode($activity) + ); + + /** + * Offer categories + */ + $categories = $this->model_catalog_product + ->getProductCategories($offer['product_id']); + + if (!empty($categories)) { + foreach ($categories as $category) { + $e->appendChild($this->dd->createElement('category')) + ->appendChild( + $this->dd->createTextNode($category) + ); + } + } + + /** + * Name & price + */ + $e->appendChild($this->dd->createElement('name')) + ->appendChild($this->dd->createTextNode($offer['name'])); + $e->appendChild($this->dd->createElement('productName')) + ->appendChild($this->dd->createTextNode($offer['name'])); + $e->appendChild($this->dd->createElement('price')) + ->appendChild($this->dd->createTextNode($offer['price'])); + + /** + * Vendor + */ + if ($offer['manufacturer_id'] != 0) { + $e->appendChild($this->dd->createElement('vendor')) + ->appendChild( + $this->dd->createTextNode( + $offerManufacturers[$offer['manufacturer_id']] + ) + ); + } + + /** + * Image + */ + if ($offer['image']) { + $image = $this->generateImage($offer['image']); + $e->appendChild($this->dd->createElement('picture')) + ->appendChild($this->dd->createTextNode($image)); + } + + /** + * Url + */ + $this->url = new Url( + HTTP_CATALOG, + $this->config->get('config_secure') + ? HTTP_CATALOG + : HTTPS_CATALOG + ); + + $e->appendChild($this->dd->createElement('url')) + ->appendChild( + $this->dd->createTextNode( + $this->url->link( + 'product/product&product_id=' . $offer['product_id'] + ) + ) + ); + + + if ($offer['sku']) { + $sku = $this->dd->createElement('param'); + $sku->setAttribute('code', 'article'); + $sku->setAttribute('name', $this->language->get('article')); + $sku->appendChild($this->dd->createTextNode($offer['sku'])); + $e->appendChild($sku); + } + + if ($offer['weight'] != '') { + $weight = $this->dd->createElement('param'); + $weight->setAttribute('color', 'weight'); + $weight->setAttribute('name', $this->language->get('weight')); + $weightValue = (isset($offer['weight_class'])) + ? round($offer['weight'], 3) . ' ' . $offer['weight_class'] + : round($offer['weight'], 3) + ; + $weight->appendChild($this->dd->createTextNode($weightValue)); + $e->appendChild($weight); + } + } + } + + /** + * @param $image + * @return mixed + */ + private function generateImage($image) + { + $this->load->model('tool/image'); + + return $this->model_tool_image->resize( + $image, + $this->config->get('config_image_product_width'), + $this->config->get('config_image_product_height') + ); + } +} diff --git a/admin/model/retailcrm/order.php b/admin/model/retailcrm/order.php new file mode 100644 index 0000000..5ef90c5 --- /dev/null +++ b/admin/model/retailcrm/order.php @@ -0,0 +1,174 @@ +load->model('setting/setting'); + $settings = $this->model_setting_setting->getSetting('retailcrm'); + + if(!empty($settings['retailcrm_url']) && !empty($settings['retailcrm_apikey'])) { + require_once DIR_SYSTEM . 'library/retailcrm/bootstrap.php'; + + $this->retailcrm = new RetailcrmProxy( + $settings['retailcrm_url'], + $settings['retailcrm_apikey'], + DIR_SYSTEM . 'logs/retailcrm.log' + ); + + $order = array(); + + $payment_code = $order_data['payment_code']; + $delivery_code = $order_data['shipping_code']; + + $customers = $this->retailcrm->customersList( + array( + 'name' => $order_data['telephone'], + 'email' => $order_data['email'] + ), + 1, + 100 + ); + + foreach($customers['customers'] as $customer) { + $order['customer']['id'] = $customer['id']; + } + + unset($customers); + + $order['externalId'] = $order_id; + $order['firstName'] = $order_data['firstname']; + $order['lastName'] = $order_data['lastname']; + $order['email'] = $order_data['email']; + $order['phone'] = $order_data['telephone']; + $order['customerComment'] = $order_data['comment']; + + $deliveryCost = 0; + $orderTotals = isset($order_data['totals']) ? $order_data['totals'] : $order_data['order_total'] ; + + foreach ($orderTotals as $totals) { + if ($totals['code'] == 'shipping') { + $deliveryCost = $totals['value']; + } + } + + $order['createdAt'] = date('Y-m-d H:i:s'); + $order['paymentType'] = $settings['retailcrm_payment'][$payment_code]; + + $country = (isset($order_data['shipping_country'])) ? $order_data['shipping_country'] : '' ; + + $order['delivery'] = array( + 'code' => $settings['retailcrm_delivery'][$delivery_code], + 'cost' => $deliveryCost, + 'address' => array( + 'index' => $order_data['shipping_postcode'], + 'city' => $order_data['shipping_city'], + 'country' => $order_data['shipping_country_id'], + 'region' => $order_data['shipping_zone_id'], + 'text' => implode(', ', array( + $order_data['shipping_postcode'], + $country, + $order_data['shipping_city'], + $order_data['shipping_address_1'], + $order_data['shipping_address_2'] + )) + ) + ); + + $orderProducts = isset($order_data['products']) ? $order_data['products'] : $order_data['order_product']; + + foreach ($orderProducts as $product) { + $order['items'][] = array( + 'productId' => $product['product_id'], + 'productName' => $product['name'], + 'initialPrice' => $product['price'], + 'quantity' => $product['quantity'], + ); + } + + if (isset($order_data['order_status_id'])) { + $order['status'] = $settings['retailcrm_status'][$order_data['order_status_id']]; + } + + $this->retailcrm->ordersCreate($order); + } + } + + public function changeInCrm($order_data, $order_id) + { + $this->load->model('setting/setting'); + $settings = $this->model_setting_setting->getSetting('retailcrm'); + + if(!empty($settings['retailcrm_url']) && !empty($settings['retailcrm_apikey'])) { + require_once DIR_SYSTEM . 'library/retailcrm/bootstrap.php'; + + $this->retailcrm = new RetailcrmProxy( + $settings['retailcrm_url'], + $settings['retailcrm_apikey'], + DIR_SYSTEM . 'logs/retailcrm.log' + ); + + $order = array(); + + $payment_code = $order_data['payment_code']; + $delivery_code = $order_data['shipping_code']; + + $order['externalId'] = $order_id; + $order['firstName'] = $order_data['firstname']; + $order['lastName'] = $order_data['lastname']; + $order['email'] = $order_data['email']; + $order['phone'] = $order_data['telephone']; + $order['customerComment'] = $order_data['comment']; + + $deliveryCost = 0; + $orderTotals = isset($order_data['totals']) ? $order_data['totals'] : $order_data['order_total'] ; + + foreach ($orderTotals as $totals) { + if ($totals['code'] == 'shipping') { + $deliveryCost = $totals['value']; + } + } + + $order['createdAt'] = date('Y-m-d H:i:s'); + $order['paymentType'] = $settings['retailcrm_payment'][$payment_code]; + + $country = (isset($order_data['shipping_country'])) ? $order_data['shipping_country'] : '' ; + + $order['delivery'] = array( + 'code' => $settings['retailcrm_delivery'][$delivery_code], + 'cost' => $deliveryCost, + 'address' => array( + 'index' => $order_data['shipping_postcode'], + 'city' => $order_data['shipping_city'], + 'country' => $order_data['shipping_country_id'], + 'region' => $order_data['shipping_zone_id'], + 'text' => implode(', ', array( + $order_data['shipping_postcode'], + $country, + $order_data['shipping_city'], + $order_data['shipping_address_1'], + $order_data['shipping_address_2'] + )) + ) + ); + + $orderProducts = isset($order_data['products']) ? $order_data['products'] : $order_data['order_product']; + + foreach ($orderProducts as $product) { + $order['items'][] = array( + 'productId' => $product['product_id'], + 'productName' => $product['name'], + 'initialPrice' => $product['price'], + 'quantity' => $product['quantity'], + ); + } + + if (isset($order_data['order_status_id'])) { + $order['status'] = $settings['retailcrm_status'][$order_data['order_status_id']]; + } + + $this->retailcrm->ordersEdit($order); + } + } +} + diff --git a/admin/model/retailcrm/references.php b/admin/model/retailcrm/references.php new file mode 100644 index 0000000..d031250 --- /dev/null +++ b/admin/model/retailcrm/references.php @@ -0,0 +1,138 @@ + $this->getOpercartDeliveryTypes(), + 'retailcrm' => $this->getApiDeliveryTypes() + ); + } + + public function getOrderStatuses() + { + return array( + 'opencart' => $this->getOpercartOrderStatuses(), + 'retailcrm' => $this->getApiOrderStatuses() + ); + } + + public function getPaymentTypes() + { + return array( + 'opencart' => $this->getOpercartPaymentTypes(), + 'retailcrm' => $this->getApiPaymentTypes() + ); + } + + protected function getOpercartDeliveryTypes() + { + $deliveryMethods = array(); + $files = glob(DIR_APPLICATION . 'controller/shipping/*.php'); + + if ($files) { + foreach ($files as $file) { + $extension = basename($file, '.php'); + + $this->load->language('shipping/' . $extension); + + if ($this->config->get($extension . '_status')) { + $deliveryMethods[$extension.'.'.$extension] = strip_tags( + $this->language->get('heading_title') + ); + } + } + } + + return $deliveryMethods; + } + + protected function getOpercartOrderStatuses() + { + $this->load->model('localisation/order_status'); + + return $this->model_localisation_order_status + ->getOrderStatuses(array()); + } + + protected function getOpercartPaymentTypes() + { + $paymentTypes = array(); + $files = glob(DIR_APPLICATION . 'controller/payment/*.php'); + + if ($files) { + foreach ($files as $file) { + $extension = basename($file, '.php'); + + $this->load->language('payment/' . $extension); + + if ($this->config->get($extension . '_status')) { + $paymentTypes[$extension] = strip_tags( + $this->language->get('heading_title') + ); + } + } + } + + return $paymentTypes; + } + + protected function getApiDeliveryTypes() + { + $this->load->model('setting/setting'); + $settings = $this->model_setting_setting->getSetting('retailcrm'); + + if(!empty($settings['retailcrm_url']) && !empty($settings['retailcrm_apikey'])) { + $this->retailcrm = new RetailcrmProxy( + $settings['retailcrm_url'], + $settings['retailcrm_apikey'], + DIR_SYSTEM . 'logs/retailcrm.log' + ); + + $response = $this->retailcrm->deliveryTypesList(); + + return ($response === false) ? array() : $response->deliveryTypes; + } + } + + protected function getApiOrderStatuses() + { + $this->load->model('setting/setting'); + $settings = $this->model_setting_setting->getSetting('retailcrm'); + + if(!empty($settings['retailcrm_url']) && !empty($settings['retailcrm_apikey'])) { + $this->retailcrm = new RetailcrmProxy( + $settings['retailcrm_url'], + $settings['retailcrm_apikey'], + DIR_SYSTEM . 'logs/retailcrm.log' + ); + + $response = $this->retailcrm->statusesList(); + + return ($response === false) ? array() : $response->statuses; + } + } + + protected function getApiPaymentTypes() + { + $this->load->model('setting/setting'); + $settings = $this->model_setting_setting->getSetting('retailcrm'); + + if(!empty($settings['retailcrm_url']) && !empty($settings['retailcrm_apikey'])) { + $this->retailcrm = new RetailcrmProxy( + $settings['retailcrm_url'], + $settings['retailcrm_apikey'], + DIR_SYSTEM . 'logs/retailcrm.log' + ); + + $response = $this->retailcrm->paymentTypesList(); + + return ($response === false) ? array() : $response->paymentTypes; + } + } +} diff --git a/admin/view/stylesheet/intarocrm.css b/admin/view/stylesheet/intarocrm.css deleted file mode 100644 index 8bf0ceb..0000000 --- a/admin/view/stylesheet/intarocrm.css +++ /dev/null @@ -1,2 +0,0 @@ -.intarocrm_unit {margin-bottom: 10px;} -.intarocrm_unit input {width: 30%;} \ No newline at end of file diff --git a/admin/view/stylesheet/retailcrm.css b/admin/view/stylesheet/retailcrm.css new file mode 100644 index 0000000..43cbeb6 --- /dev/null +++ b/admin/view/stylesheet/retailcrm.css @@ -0,0 +1,2 @@ +.retailcrm_unit {margin-bottom: 10px;} +.retailcrm_unit input {width: 30%;} diff --git a/admin/view/template/module/intarocrm.tpl b/admin/view/template/module/retailcrm.tpl similarity index 50% rename from admin/view/template/module/intarocrm.tpl rename to admin/view/template/module/retailcrm.tpl index 6154a66..53e4841 100644 --- a/admin/view/template/module/intarocrm.tpl +++ b/admin/view/template/module/retailcrm.tpl @@ -9,10 +9,10 @@
- +
- /admin/settings#t-main + /admin/settings#t-main
@@ -23,67 +23,67 @@
- + -

-
-
- +

+
+
+
-
-
- +
+
+
- + - - -
+ + +
-

+

-

+

$value): ?> -
- + $v): ?> + - +
-

+

-
- + $v): ?> + - +
-

+

$value): ?> -
- + $v): ?> + - +
@@ -93,8 +93,7 @@
-
- \ No newline at end of file + diff --git a/catalog/model/intarocrm/order.php b/catalog/model/intarocrm/order.php deleted file mode 100644 index 8779f66..0000000 --- a/catalog/model/intarocrm/order.php +++ /dev/null @@ -1,19 +0,0 @@ -load->model('setting/setting'); - $settings = $this->model_setting_setting->getSetting('intarocrm'); - $settings['domain'] = parse_url(HTTP_SERVER, PHP_URL_HOST); - - if(isset($settings['intarocrm_url']) && $settings['intarocrm_url'] != '' && isset($settings['intarocrm_apikey']) && $settings['intarocrm_apikey'] != '') { - include_once DIR_SYSTEM . 'library/intarocrm/apihelper.php'; - $order['order_id'] = $order_id; - $crm = new ApiHelper($settings); - $crm->processOrder($order); - } - - } -} -?> \ No newline at end of file diff --git a/catalog/model/retailcrm/order.php b/catalog/model/retailcrm/order.php new file mode 100644 index 0000000..e021e30 --- /dev/null +++ b/catalog/model/retailcrm/order.php @@ -0,0 +1,97 @@ +load->model('setting/setting'); + $settings = $this->model_setting_setting->getSetting('retailcrm'); + + if(!empty($settings['retailcrm_url']) && !empty($settings['retailcrm_apikey'])) { + require_once DIR_SYSTEM . 'library/retailcrm/bootstrap.php'; + + $this->retailcrm = new RetailcrmProxy( + $settings['retailcrm_url'], + $settings['retailcrm_apikey'], + DIR_SYSTEM . 'logs/retailcrm.log' + ); + + $order = array(); + + $payment_code = $order_data['payment_code']; + $delivery_code = $order_data['shipping_code']; + + $customers = $this->retailcrm->customersList( + array( + 'name' => $order_data['telephone'], + 'email' => $order_data['email'] + ), + 1, + 100 + ); + + foreach($customers['customers'] as $customer) { + $order['customer']['id'] = $customer['id']; + } + + unset($customers); + + $order['externalId'] = $order_id; + $order['firstName'] = $order_data['firstname']; + $order['lastName'] = $order_data['lastname']; + $order['email'] = $order_data['email']; + $order['phone'] = $order_data['telephone']; + $order['customerComment'] = $order_data['comment']; + + $deliveryCost = 0; + $orderTotals = isset($order_data['totals']) ? $order_data['totals'] : $order_data['order_total'] ; + + foreach ($orderTotals as $totals) { + if ($totals['code'] == 'shipping') { + $deliveryCost = $totals['value']; + } + } + + $order['createdAt'] = date('Y-m-d H:i:s'); + $order['paymentType'] = $settings['retailcrm_payment'][$payment_code]; + + $country = (isset($order_data['shipping_country'])) ? $order_data['shipping_country'] : '' ; + + $order['delivery'] = array( + 'code' => $settings['retailcrm_delivery'][$delivery_code], + 'cost' => $deliveryCost, + 'address' => array( + 'index' => $order_data['shipping_postcode'], + 'city' => $order_data['shipping_city'], + 'country' => $order_data['shipping_country_id'], + 'region' => $order_data['shipping_zone_id'], + 'text' => implode(', ', array( + $order_data['shipping_postcode'], + $country, + $order_data['shipping_city'], + $order_data['shipping_address_1'], + $order_data['shipping_address_2'] + )) + ) + ); + + $orderProducts = isset($order_data['products']) ? $order_data['products'] : $order_data['order_product']; + + foreach ($orderProducts as $product) { + $order['items'][] = array( + 'productId' => $product['product_id'], + 'productName' => $product['name'], + 'initialPrice' => $product['price'], + 'quantity' => $product['quantity'], + ); + } + + if (isset($order_data['order_status_id'])) { + $order['status'] = $settings['retailcrm_status'][$order_data['order_status_id']]; + } + + $this->retailcrm->ordersCreate($order); + } + } +} + diff --git a/cli/cli_export.php b/cli/cli_export.php deleted file mode 100644 index f07aa2e..0000000 --- a/cli/cli_export.php +++ /dev/null @@ -1,3 +0,0 @@ - Intstall module. Before running exchange you must configure module. - -### Export - -Setup cron job for periodically catalog export - -``` -* */12 * * * /usr/bin/php /path/to/opencart/cli/cli_export.php >> /path/to/opencart/system/logs/cronjob_export.log 2>&1 -``` - -Into your CRM settings set path to exported file - -``` -/download/intarocrm.xml -``` - -### Exchange setup - - -#### Export new order from shop to CRM - -``` -$this->load->model('intarocrm/order'); -$this->model_intarocrm_order->send($data, $order_id); -``` - -Add this lines into: -* /catalog/model/checkout/order.php script, into addOrder method before return statement - -``` -if (!isset($data['fromApi'])) { - $this->load->model('setting/setting'); - $status = $this->model_setting_setting->getSetting('intarocrm'); - $data['order_status'] = $status['intarocrm_status'][$data['order_status_id']]; - - $this->load->model('intarocrm/order'); - $this->model_intarocrm_order->send($data, $order_id); -} -``` - -Add this lines into: -* /admin/model/sale/order.php script, into addOrder & editOrder methods at the end of these methods - -#### Export new order from CRM to shop - -Setup cron job for exchange between CRM & your shop - -``` -*/5 * * * * /usr/bin/php /path/to/opencart/cli/cli_history.php >> /path/to/opencart/system/logs/cronjob_history.log 2>&1 -``` diff --git a/doc/TODO.md b/doc/TODO.md deleted file mode 100644 index 32dce71..0000000 --- a/doc/TODO.md +++ /dev/null @@ -1,6 +0,0 @@ -TODO -==== - -* Export old customers & orders -* New customers export -* Make sources PSR-2 compatible \ No newline at end of file diff --git a/cli/cli_dispatch.php b/system/cron/dispatch.php similarity index 94% rename from cli/cli_dispatch.php rename to system/cron/dispatch.php index 8baa5e4..1c756ed 100644 --- a/cli/cli_dispatch.php +++ b/system/cron/dispatch.php @@ -1,12 +1,5 @@ write("ERROR: cli $cli_action call attempted by non-cli."); - http_response_code(400); - exit; -} - // Ensure $cli_action is set if (!isset($cli_action)) { echo 'ERROR: $cli_action must be set in calling script.'; @@ -19,7 +12,7 @@ if (!isset($cli_action)) { define('VERSION', '1.5.6'); // Configuration (note we're using the admin config) -require_once(__DIR__ . '/../admin/config.php'); +require_once(realpath(dirname(__FILE__)) . '/../../admin/config.php'); // Configuration check if (!defined('DIR_APPLICATION')) { @@ -138,4 +131,3 @@ $controller->dispatch($action, new Action('error/not_found')); // Output $response->output(); -?> \ No newline at end of file diff --git a/system/cron/export.php b/system/cron/export.php new file mode 100644 index 0000000..85d7d82 --- /dev/null +++ b/system/cron/export.php @@ -0,0 +1,3 @@ +dir = __DIR__ . '/../../logs/'; - $this->fileDate = $this->dir . 'intarocrm_history.log'; - $this->settings = $settings; - $this->domain = $settings['domain']; - - $this->log = new Monolog\Logger('intarocrm'); - $this->log->pushHandler( - new Monolog\Handler\StreamHandler($this->dir . 'intarocrm_module.log', Monolog\Logger::INFO) - ); - - $this->intaroApi = new IntaroCrm\RestApi( - $settings['intarocrm_url'], - $settings['intarocrm_apikey'] - ); - } - - public function processOrder($data) { - - $order = array(); - $customer = array(); - $customers = array(); - - $payment_code = $data['payment_code']; - $delivery_code = $data['shipping_code']; - $settings = $this->settings; - - try { - $customers = $this->intaroApi->customers($data['telephone'], $data['email'], $data['lastname'], 200, 0); - } catch (IntaroCrm\Exception\ApiException $e) { - $this->log->addError('['.$this->domain.'] RestApi::customers:' . $e->getMessage()); - $this->log->addError('['.$this->domain.'] RestApi::customers:' . json_encode($data)); - } catch (IntaroCrm\Exception\CurlException $e) { - $this->log->addError('['.$this->domain.'] RestApi::customers::Curl:' . $e->getMessage()); - } - - - if(count($customers) > 0 && isset($customers[0]['externalId'])) { - $order['customerId'] = $customers[0]['externalId']; - } else { - $order['customerId'] = ($data['customer_id'] != '') ? $data['customer_id'] : (int) substr((microtime(true) * 10000) . mt_rand(1, 1000), 10, -1); - $customer['externalId'] = $order['customerId']; - $customer['firstName'] = $data['firstname']; - $customer['lastName'] = $data['lastname']; - $customer['email'] = $data['email']; - $customer['phones'] = array(array('number' => $data['telephone'])); - - $customer['address']['country'] = $data['payment_country_id']; - $customer['address']['region'] = $data['payment_zone_id']; - - $customer['address']['text'] = implode(', ', array( - $data['payment_postcode'], - $data['payment_country'], - $data['payment_city'], - $data['payment_address_1'], - $data['payment_address_2'] - )); - - try { - $this->customer = $this->intaroApi->customerEdit($customer); - } catch (IntaroCrm\Exception\ApiException $e) { - $this->customer = $e->getMessage(); - $this->log->addError('['.$this->domain.'] RestApi::orderCreate:' . $e->getMessage()); - $this->log->addError('['.$this->domain.'] RestApi::orderCreate:' . json_encode($order)); - } catch (IntaroCrm\Exception\CurlException $e) { - $this->customer = $e->getMessage(); - $this->log->addError('['.$this->domain.'] RestApi::orderCreate::Curl:' . $e->getMessage()); - } - } - - unset($customer); - unset($customers); - - $order['externalId'] = $data['order_id']; - $order['firstName'] = $data['firstname']; - $order['lastName'] = $data['lastname']; - $order['email'] = $data['email']; - $order['phone'] = $data['telephone']; - $order['customerComment'] = $data['comment']; - - $deliveryCost = 0; - $orderTotals = isset($data['totals']) ? $data['totals'] : $data['order_total'] ; - - foreach ($orderTotals as $totals) { - if ($totals['code'] == 'shipping') { - $deliveryCost = $totals['value']; - } - } - - $order['createdAt'] = date('Y-m-d H:i:s'); - $order['paymentType'] = $settings['intarocrm_payment'][$payment_code]; - - $country = (isset($data['shipping_country'])) ? $data['shipping_country'] : '' ; - - $order['delivery'] = array( - 'code' => $settings['intarocrm_delivery'][$delivery_code], - 'cost' => $deliveryCost, - 'address' => array( - 'index' => $data['shipping_postcode'], - 'city' => $data['shipping_city'], - 'country' => $data['shipping_country_id'], - 'region' => $data['shipping_zone_id'], - 'text' => implode(', ', array( - $data['shipping_postcode'], - $country, - $data['shipping_city'], - $data['shipping_address_1'], - $data['shipping_address_2'] - )) - ) - ); - - $orderProducts = isset($data['products']) ? $data['products'] : $data['order_product']; - - foreach ($orderProducts as $product) { - $order['items'][] = array( - 'productId' => $product['product_id'], - 'productName' => $product['name'], - 'initialPrice' => $product['price'], - 'quantity' => $product['quantity'], - ); - } - - if (isset($data['order_status_id'])) { - $order['status'] = $data['order_status']; - } - - try { - $this->intaroApi->orderEdit($order); - } catch (IntaroCrm\Exception\ApiException $e) { - $this->log->addError('['.$this->domain.'] RestApi::orderCreate:' . $e->getMessage()); - $this->log->addError('['.$this->domain.'] RestApi::orderCreate:' . json_encode($order)); - } catch (IntaroCrm\Exception\CurlException $e) { - $this->log->addError('['.$this->domain.'] RestApi::orderCreate::Curl:' . $e->getMessage()); - } - } - - public function orderHistory() { - - $orders = array(); - - try { - $orders = $this->intaroApi->orderHistory($this->getDate()); - $this->saveDate($this->intaroApi->getGeneratedAt()->format('Y-m-d H:i:s')); - } catch (IntaroCrm\Exception\ApiException $e) { - $this->log->addError('['.$this->domain.'] RestApi::orderHistory:' . $e->getMessage()); - $this->log->addError('['.$this->domain.'] RestApi::orderHistory:' . json_encode($orders)); - - return false; - } catch (IntaroCrm\Exception\CurlException $e) { - $this->log->addError('['.$this->domain.'] RestApi::orderHistory::Curl:' . $e->getMessage()); - - return false; - } - - return $orders; - } - - public function orderFixExternalIds($data) - { - try { - return $this->intaroApi->orderFixExternalIds($data); - } catch (IntaroCrm\Exception\ApiException $e) { - $this->log->addError('['.$this->domain.'] RestApi::orderFixExternalIds:' . $e->getMessage()); - $this->log->addError('['.$this->domain.'] RestApi::orderFixExternalIds:' . json_encode($data)); - - return false; - } catch (IntaroCrm\Exception\CurlException $e) { - $this->log->addError('['.$this->domain.'] RestApi::orderFixExternalIds::Curl:' . $e->getMessage()); - - return false; - } - } - - public function customerFixExternalIds($data) - { - try { - return $this->intaroApi->customerFixExternalIds($data); - } catch (IntaroCrm\Exception\ApiException $e) { - $this->log->addError('['.$this->domain.'] RestApi::customerFixExternalIds:' . $e->getMessage()); - $this->log->addError('['.$this->domain.'] RestApi::customerFixExternalIds:' . json_encode($data)); - - return false; - } catch (IntaroCrm\Exception\CurlException $e) { - $this->log->addError('['.$this->domain.'] RestApi::customerFixExternalIds::Curl:' . $e->getMessage()); - - return false; - } - } - - public function getOrder($order_id) - { - try { - return $this->intaroApi->orderGet($order_id); - } catch (IntaroCrm\Exception\ApiException $e) { - $this->log->addError('['.$this->domain.'] RestApi::orderFixExternalIds:' . $e->getMessage()); - $this->log->addError('['.$this->domain.'] RestApi::orderFixExternalIds:' . json_encode($order)); - - return false; - } catch (IntaroCrm\Exception\CurlException $e) { - $this->log->addError('['.$this->domain.'] RestApi::orderFixExternalIds::Curl:' . $e->getMessage()); - - return false; - } - - } - - private function saveDate($date) { - file_put_contents($this->fileDate, $date, LOCK_EX); - } - - private function getDate() { - if (file_exists($this->fileDate)) { - $result = file_get_contents($this->fileDate); - } else { - $result = date('Y-m-d H:i:s', strtotime('-2 days', strtotime(date('Y-m-d H:i:s')))); - } - - return $result; - } - -} diff --git a/system/library/intarocrm/composer.json b/system/library/intarocrm/composer.json deleted file mode 100644 index 18ae32f..0000000 --- a/system/library/intarocrm/composer.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "retailcrm/opencart-module", - "description": "Opencart integration for IntaroCRM", - "type": "library", - "keywords": ["api", "Intaro CRM", "rest"], - "homepage": "http://www.retailcrm.ru/", - "authors": [ - { - "name": "Alex Lushpai", - "email": "lushpai@intaro.ru", - "role": "Developer" - } - ], - "support": { - "email": "support@intarocrm.ru" - }, - "require": { - "php": ">=5.3", - "retailcrm/api-client-php": "1.3.*", - "symfony/console": "2.6.*", - "monolog/monolog": "1.12.*" - }, - "autoload": { - "psr-0": { - "": "/" - } - } -} diff --git a/system/library/intarocrm/composer.phar b/system/library/intarocrm/composer.phar deleted file mode 100755 index aa9c50d5269ed6ff9be75af9a7599ef1180b6f9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1016883 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 _O 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 z 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 z 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 O{L?@E(~nQqpZs@$XPSHf diff --git a/system/library/retailcrm/CurlException.php b/system/library/retailcrm/CurlException.php new file mode 100644 index 0000000..2ab00f5 --- /dev/null +++ b/system/library/retailcrm/CurlException.php @@ -0,0 +1,5 @@ +client = new RetailcrmHttpClient($url, array('apiKey' => $apiKey)); + $this->siteCode = $site; + } + + /** + * Create a order + * + * @param array $order + * @param string $site (default: null) + * @return RetailcrmApiResponse + */ + public function ordersCreate(array $order, $site = null) + { + if (!sizeof($order)) { + throw new InvalidArgumentException('Parameter `order` must contains a data'); + } + + return $this->client->makeRequest("/orders/create", RetailcrmHttpClient::METHOD_POST, $this->fillSite($site, array( + 'order' => json_encode($order) + ))); + } + + /** + * Edit a order + * + * @param array $order + * @param string $by + * @param string $site (default: null) + * @return RetailcrmApiResponse + */ + public function ordersEdit(array $order, $by = 'externalId', $site = null) + { + if (!sizeof($order)) { + throw new InvalidArgumentException('Parameter `order` must contains a data'); + } + + $this->checkIdParameter($by); + + if (!isset($order[$by])) { + throw new InvalidArgumentException(sprintf('Order array must contain the "%s" parameter.', $by)); + } + + return $this->client->makeRequest( + "/orders/" . $order[$by] . "/edit", + RetailcrmHttpClient::METHOD_POST, + $this->fillSite($site, array( + 'order' => json_encode($order), + 'by' => $by, + )) + ); + } + + /** + * Upload array of the orders + * + * @param array $orders + * @param string $site (default: null) + * @return RetailcrmApiResponse + */ + public function ordersUpload(array $orders, $site = null) + { + if (!sizeof($orders)) { + throw new InvalidArgumentException('Parameter `orders` must contains array of the orders'); + } + + return $this->client->makeRequest("/orders/upload", RetailcrmHttpClient::METHOD_POST, $this->fillSite($site, array( + 'orders' => json_encode($orders), + ))); + } + + /** + * Get order by id or externalId + * + * @param string $id + * @param string $by (default: 'externalId') + * @param string $site (default: null) + * @return RetailcrmApiResponse + */ + public function ordersGet($id, $by = 'externalId', $site = null) + { + $this->checkIdParameter($by); + + return $this->client->makeRequest("/orders/$id", RetailcrmHttpClient::METHOD_GET, $this->fillSite($site, array( + 'by' => $by + ))); + } + + /** + * Returns a orders history + * + * @param DateTime $startDate (default: null) + * @param DateTime $endDate (default: null) + * @param int $limit (default: 100) + * @param int $offset (default: 0) + * @param bool $skipMyChanges (default: true) + * @return RetailcrmApiResponse + */ + public function ordersHistory( + DateTime $startDate = null, + DateTime $endDate = null, + $limit = 100, + $offset = 0, + $skipMyChanges = true + ) { + $parameters = array(); + + if ($startDate) { + $parameters['startDate'] = $startDate->format('Y-m-d H:i:s'); + } + if ($endDate) { + $parameters['endDate'] = $endDate->format('Y-m-d H:i:s'); + } + if ($limit) { + $parameters['limit'] = (int) $limit; + } + if ($offset) { + $parameters['offset'] = (int) $offset; + } + if ($skipMyChanges) { + $parameters['skipMyChanges'] = (bool) $skipMyChanges; + } + + return $this->client->makeRequest('/orders/history', RetailcrmHttpClient::METHOD_GET, $parameters); + } + + /** + * Returns filtered orders list + * + * @param array $filter (default: array()) + * @param int $page (default: null) + * @param int $limit (default: null) + * @return RetailcrmApiResponse + */ + public function ordersList(array $filter = array(), $page = null, $limit = null) + { + $parameters = array(); + + if (sizeof($filter)) { + $parameters['filter'] = $filter; + } + if (null !== $page) { + $parameters['page'] = (int) $page; + } + if (null !== $limit) { + $parameters['limit'] = (int) $limit; + } + + return $this->client->makeRequest('/orders', RetailcrmHttpClient::METHOD_GET, $parameters); + } + + /** + * Returns statuses of the orders + * + * @param array $ids (default: array()) + * @param array $externalIds (default: array()) + * @return RetailcrmApiResponse + */ + public function ordersStatuses(array $ids = array(), array $externalIds = array()) + { + $parameters = array(); + + if (sizeof($ids)) { + $parameters['ids'] = $ids; + } + if (sizeof($externalIds)) { + $parameters['externalIds'] = $externalIds; + } + + return $this->client->makeRequest('/orders/statuses', RetailcrmHttpClient::METHOD_GET, $parameters); + } + + /** + * Save order IDs' (id and externalId) association in the CRM + * + * @param array $ids + * @return RetailcrmApiResponse + */ + public function ordersFixExternalIds(array $ids) + { + if (!sizeof($ids)) { + throw new InvalidArgumentException('Method parameter must contains at least one IDs pair'); + } + + return $this->client->makeRequest("/orders/fix-external-ids", RetailcrmHttpClient::METHOD_POST, array( + 'orders' => json_encode($ids), + )); + } + + /** + * Get orders assembly history + * + * @param array $filter (default: array()) + * @param int $page (default: null) + * @param int $limit (default: null) + * @return RetailcrmApiResponse + */ + public function ordersPacksHistory(array $filter = array(), $page = null, $limit = null) + { + $parameters = array(); + + if (sizeof($filter)) { + $parameters['filter'] = $filter; + } + if (null !== $page) { + $parameters['page'] = (int) $page; + } + if (null !== $limit) { + $parameters['limit'] = (int) $limit; + } + + return $this->client->makeRequest('/orders/packs/history', RetailcrmHttpClient::METHOD_GET, $parameters); + } + + /** + * Create a customer + * + * @param array $customer + * @param string $site (default: null) + * @return RetailcrmApiResponse + */ + public function customersCreate(array $customer, $site = null) + { + if (!sizeof($customer)) { + throw new InvalidArgumentException('Parameter `customer` must contains a data'); + } + + return $this->client->makeRequest("/customers/create", RetailcrmHttpClient::METHOD_POST, $this->fillSite($site, array( + 'customer' => json_encode($customer) + ))); + } + + /** + * Edit a customer + * + * @param array $customer + * @param string $by (default: 'externalId') + * @param string $site (default: null) + * @return RetailcrmApiResponse + */ + public function customersEdit(array $customer, $by = 'externalId', $site = null) + { + if (!sizeof($customer)) { + throw new InvalidArgumentException('Parameter `customer` must contains a data'); + } + + $this->checkIdParameter($by); + + if (!isset($customer[$by])) { + throw new InvalidArgumentException(sprintf('Customer array must contain the "%s" parameter.', $by)); + } + + return $this->client->makeRequest( + "/customers/" . $customer[$by] . "/edit", + RetailcrmHttpClient::METHOD_POST, + $this->fillSite( + $site, + array( + 'customer' => json_encode($customer), + 'by' => $by + ) + ) + ); + } + + /** + * Upload array of the customers + * + * @param array $customers + * @param string $site (default: null) + * @return RetailcrmApiResponse + */ + public function customersUpload(array $customers, $site = null) + { + if (!sizeof($customers)) { + throw new InvalidArgumentException('Parameter `customers` must contains array of the customers'); + } + + return $this->client->makeRequest("/customers/upload", RetailcrmHttpClient::METHOD_POST, $this->fillSite($site, array( + 'customers' => json_encode($customers), + ))); + } + + /** + * Get customer by id or externalId + * + * @param string $id + * @param string $by (default: 'externalId') + * @param string $site (default: null) + * @return RetailcrmApiResponse + */ + public function customersGet($id, $by = 'externalId', $site = null) + { + $this->checkIdParameter($by); + + return $this->client->makeRequest("/customers/$id", RetailcrmHttpClient::METHOD_GET, $this->fillSite($site, array( + 'by' => $by + ))); + } + + /** + * Returns filtered customers list + * + * @param array $filter (default: array()) + * @param int $page (default: null) + * @param int $limit (default: null) + * @return RetailcrmApiResponse + */ + public function customersList(array $filter = array(), $page = null, $limit = null) + { + $parameters = array(); + + if (sizeof($filter)) { + $parameters['filter'] = $filter; + } + if (null !== $page) { + $parameters['page'] = (int) $page; + } + if (null !== $limit) { + $parameters['limit'] = (int) $limit; + } + + return $this->client->makeRequest('/customers', RetailcrmHttpClient::METHOD_GET, $parameters); + } + + /** + * Save customer IDs' (id and externalId) association in the CRM + * + * @param array $ids + * @return RetailcrmApiResponse + */ + public function customersFixExternalIds(array $ids) + { + if (!sizeof($ids)) { + throw new InvalidArgumentException('Method parameter must contains at least one IDs pair'); + } + + return $this->client->makeRequest("/customers/fix-external-ids", RetailcrmHttpClient::METHOD_POST, array( + 'customers' => json_encode($ids), + )); + } + + /** + * Get purchace prices & stock balance + * + * @param array $filter (default: array()) + * @param int $page (default: null) + * @param int $limit (default: null) + * @param string $site (default: null) + * @return RetailcrmApiResponse + */ + public function storeInventories(array $filter = array(), $page = null, $limit = null, $site = null) + { + $parameters = array(); + + if (sizeof($filter)) { + $parameters['filter'] = $filter; + } + if (null !== $page) { + $parameters['page'] = (int) $page; + } + if (null !== $limit) { + $parameters['limit'] = (int) $limit; + } + + return $this->client->makeRequest('/store/inventories', RetailcrmHttpClient::METHOD_GET, $this->fillSite($site, $parameters)); + } + + /** + * Upload store inventories + * + * @param array $offers + * @param string $site (default: null) + * @return RetailcrmApiResponse + */ + public function storeInventoriesUpload(array $offers, $site = null) + { + if (!sizeof($offers)) { + throw new InvalidArgumentException('Parameter `offers` must contains array of the customers'); + } + + return $this->client->makeRequest( + "/store/inventories/upload", + RetailcrmHttpClient::METHOD_POST, + $this->fillSite($site, array('offers' => json_encode($offers))) + ); + } + + /** + * Returns deliveryServices list + * + * @return RetailcrmApiResponse + */ + public function deliveryServicesList() + { + return $this->client->makeRequest('/reference/delivery-services', RetailcrmHttpClient::METHOD_GET); + } + + /** + * Returns deliveryTypes list + * + * @return RetailcrmApiResponse + */ + public function deliveryTypesList() + { + return $this->client->makeRequest('/reference/delivery-types', RetailcrmHttpClient::METHOD_GET); + } + + /** + * Returns orderMethods list + * + * @return RetailcrmApiResponse + */ + public function orderMethodsList() + { + return $this->client->makeRequest('/reference/order-methods', RetailcrmHttpClient::METHOD_GET); + } + + /** + * Returns orderTypes list + * + * @return RetailcrmApiResponse + */ + public function orderTypesList() + { + return $this->client->makeRequest('/reference/order-types', RetailcrmHttpClient::METHOD_GET); + } + + /** + * Returns paymentStatuses list + * + * @return RetailcrmApiResponse + */ + public function paymentStatusesList() + { + return $this->client->makeRequest('/reference/payment-statuses', RetailcrmHttpClient::METHOD_GET); + } + + /** + * Returns paymentTypes list + * + * @return RetailcrmApiResponse + */ + public function paymentTypesList() + { + return $this->client->makeRequest('/reference/payment-types', RetailcrmHttpClient::METHOD_GET); + } + + /** + * Returns productStatuses list + * + * @return RetailcrmApiResponse + */ + public function productStatusesList() + { + return $this->client->makeRequest('/reference/product-statuses', RetailcrmHttpClient::METHOD_GET); + } + + /** + * Returns statusGroups list + * + * @return RetailcrmApiResponse + */ + public function statusGroupsList() + { + return $this->client->makeRequest('/reference/status-groups', RetailcrmHttpClient::METHOD_GET); + } + + /** + * Returns statuses list + * + * @return RetailcrmApiResponse + */ + public function statusesList() + { + return $this->client->makeRequest('/reference/statuses', RetailcrmHttpClient::METHOD_GET); + } + + /** + * Returns sites list + * + * @return RetailcrmApiResponse + */ + public function sitesList() + { + return $this->client->makeRequest('/reference/sites', RetailcrmHttpClient::METHOD_GET); + } + + /** + * Returns stores list + * + * @return RetailcrmApiResponse + */ + public function storesList() + { + return $this->client->makeRequest('/reference/stores', RetailcrmHttpClient::METHOD_GET); + } + + /** + * Edit deliveryService + * + * @param array $data delivery service data + * @return RetailcrmApiResponse + */ + public function deliveryServicesEdit(array $data) + { + if (!isset($data['code'])) { + throw new InvalidArgumentException('Data must contain "code" parameter.'); + } + + return $this->client->makeRequest( + '/reference/delivery-services/' . $data['code'] . '/edit', + RetailcrmHttpClient::METHOD_POST, + array( + 'deliveryService' => json_encode($data) + ) + ); + } + + /** + * Edit deliveryType + * + * @param array $data delivery type data + * @return RetailcrmApiResponse + */ + public function deliveryTypesEdit(array $data) + { + if (!isset($data['code'])) { + throw new InvalidArgumentException('Data must contain "code" parameter.'); + } + + return $this->client->makeRequest( + '/reference/delivery-types/' . $data['code'] . '/edit', + RetailcrmHttpClient::METHOD_POST, + array( + 'deliveryType' => json_encode($data) + ) + ); + } + + /** + * Edit orderMethod + * + * @param array $data order method data + * @return RetailcrmApiResponse + */ + public function orderMethodsEdit(array $data) + { + if (!isset($data['code'])) { + throw new InvalidArgumentException('Data must contain "code" parameter.'); + } + + return $this->client->makeRequest( + '/reference/order-methods/' . $data['code'] . '/edit', + RetailcrmHttpClient::METHOD_POST, + array( + 'orderMethod' => json_encode($data) + ) + ); + } + + /** + * Edit orderType + * + * @param array $data order type data + * @return RetailcrmApiResponse + */ + public function orderTypesEdit(array $data) + { + if (!isset($data['code'])) { + throw new InvalidArgumentException('Data must contain "code" parameter.'); + } + + return $this->client->makeRequest( + '/reference/order-types/' . $data['code'] . '/edit', + RetailcrmHttpClient::METHOD_POST, + array( + 'orderType' => json_encode($data) + ) + ); + } + + /** + * Edit paymentStatus + * + * @param array $data payment status data + * @return RetailcrmApiResponse + */ + public function paymentStatusesEdit(array $data) + { + if (!isset($data['code'])) { + throw new InvalidArgumentException('Data must contain "code" parameter.'); + } + + return $this->client->makeRequest( + '/reference/payment-statuses/' . $data['code'] . '/edit', + RetailcrmHttpClient::METHOD_POST, + array( + 'paymentStatus' => json_encode($data) + ) + ); + } + + /** + * Edit paymentType + * + * @param array $data payment type data + * @return RetailcrmApiResponse + */ + public function paymentTypesEdit(array $data) + { + if (!isset($data['code'])) { + throw new InvalidArgumentException('Data must contain "code" parameter.'); + } + + return $this->client->makeRequest( + '/reference/payment-types/' . $data['code'] . '/edit', + RetailcrmHttpClient::METHOD_POST, + array( + 'paymentType' => json_encode($data) + ) + ); + } + + /** + * Edit productStatus + * + * @param array $data product status data + * @return RetailcrmApiResponse + */ + public function productStatusesEdit(array $data) + { + if (!isset($data['code'])) { + throw new InvalidArgumentException('Data must contain "code" parameter.'); + } + + return $this->client->makeRequest( + '/reference/product-statuses/' . $data['code'] . '/edit', + RetailcrmHttpClient::METHOD_POST, + array( + 'productStatus' => json_encode($data) + ) + ); + } + + /** + * Edit order status + * + * @param array $data status data + * @return RetailcrmApiResponse + */ + public function statusesEdit(array $data) + { + if (!isset($data['code'])) { + throw new InvalidArgumentException('Data must contain "code" parameter.'); + } + + return $this->client->makeRequest( + '/reference/statuses/' . $data['code'] . '/edit', + RetailcrmHttpClient::METHOD_POST, + array( + 'status' => json_encode($data) + ) + ); + } + + /** + * Edit site + * + * @param array $data site data + * @return RetailcrmApiResponse + */ + public function sitesEdit(array $data) + { + if (!isset($data['code'])) { + throw new InvalidArgumentException('Data must contain "code" parameter.'); + } + + return $this->client->makeRequest( + '/reference/sites/' . $data['code'] . '/edit', + RetailcrmHttpClient::METHOD_POST, + array( + 'site' => json_encode($data) + ) + ); + } + + /** + * Edit store + * + * @param array $data site data + * @return RetailcrmApiResponse + */ + public function storesEdit(array $data) + { + if (!isset($data['code'])) { + throw new InvalidArgumentException('Data must contain "code" parameter.'); + } + + if (!isset($data['name'])) { + throw new InvalidArgumentException('Data must contain "name" parameter.'); + } + + return $this->client->makeRequest( + '/reference/stores/' . $data['code'] . '/edit', + RetailcrmHttpClient::METHOD_POST, + array( + 'store' => json_encode($data) + ) + ); + } + + /** + * Update CRM basic statistic + * + * @return RetailcrmApiResponse + */ + public function statisticUpdate() + { + return $this->client->makeRequest('/statistic/update', RetailcrmHttpClient::METHOD_GET); + } + + /** + * Return current site + * + * @return string + */ + public function getSite() + { + return $this->siteCode; + } + + /** + * Set site + * + * @param string $site + * @return void + */ + public function setSite($site) + { + $this->siteCode = $site; + } + + /** + * Check ID parameter + * + * @param string $by + * @return bool + */ + protected function checkIdParameter($by) + { + $allowedForBy = array('externalId', 'id'); + if (!in_array($by, $allowedForBy)) { + throw new InvalidArgumentException(sprintf( + 'Value "%s" for parameter "by" is not valid. Allowed values are %s.', + $by, + implode(', ', $allowedForBy) + )); + } + + return true; + } + + /** + * Fill params by site value + * + * @param string $site + * @param array $params + * @return array + */ + protected function fillSite($site, array $params) + { + if ($site) { + $params['site'] = $site; + } elseif ($this->siteCode) { + $params['site'] = $this->siteCode; + } + + return $params; + } +} diff --git a/system/library/retailcrm/RetailcrmApiResponse.php b/system/library/retailcrm/RetailcrmApiResponse.php new file mode 100644 index 0000000..bba91db --- /dev/null +++ b/system/library/retailcrm/RetailcrmApiResponse.php @@ -0,0 +1,122 @@ +statusCode = (int) $statusCode; + + if (!empty($responseBody)) { + $response = json_decode($responseBody, true); + + if (!$response && JSON_ERROR_NONE !== ($error = json_last_error())) { + throw new InvalidJsonException( + "Invalid JSON in the API response body. Error code #$error", + $error + ); + } + + $this->response = $response; + } + } + + /** + * Return HTTP response status code + * + * @return int + */ + public function getStatusCode() + { + return $this->statusCode; + } + + /** + * HTTP request was successful + * + * @return bool + */ + public function isSuccessful() + { + return $this->statusCode < 400; + } + + /** + * Allow to access for the property throw class method + * + * @param string $name + * @return mixed + */ + public function __call($name, $arguments) + { + // convert getSomeProperty to someProperty + $propertyName = strtolower(substr($name, 3, 1)) . substr($name, 4); + + if (!isset($this->response[$propertyName])) { + throw new InvalidArgumentException("Method \"$name\" not found"); + } + + return $this->response[$propertyName]; + } + + /** + * Allow to access for the property throw object property + * + * @param string $name + * @return mixed + */ + public function __get($name) + { + if (!isset($this->response[$name])) { + throw new InvalidArgumentException("Property \"$name\" not found"); + } + + return $this->response[$name]; + } + + /** + * @param mixed $offset + * @param mixed $value + */ + public function offsetSet($offset, $value) + { + throw new BadMethodCallException('This activity not allowed'); + } + + /** + * @param mixed $offset + */ + public function offsetUnset($offset) + { + throw new BadMethodCallException('This call not allowed'); + } + + /** + * @param mixed $offset + * @return bool + */ + public function offsetExists($offset) + { + return isset($this->response[$offset]); + } + + /** + * @param mixed $offset + * @return mixed + */ + public function offsetGet($offset) + { + if (!isset($this->response[$offset])) { + throw new InvalidArgumentException("Property \"$offset\" not found"); + } + + return $this->response[$offset]; + } +} diff --git a/system/library/retailcrm/RetailcrmHttpClient.php b/system/library/retailcrm/RetailcrmHttpClient.php new file mode 100644 index 0000000..6f74d16 --- /dev/null +++ b/system/library/retailcrm/RetailcrmHttpClient.php @@ -0,0 +1,113 @@ +url = $url; + $this->defaultParameters = $defaultParameters; + $this->retry = 0; + } + + /** + * Make HTTP request + * + * @param string $path + * @param string $method (default: 'GET') + * @param array $parameters (default: array()) + * @param int $timeout + * @param bool $verify + * @param bool $debug + * @return RetailcrmApiResponse + */ + public function makeRequest( + $path, + $method, + array $parameters = array(), + $timeout = 30, + $verify = false, + $debug = false + ) { + $allowedMethods = array(self::METHOD_GET, self::METHOD_POST); + if (!in_array($method, $allowedMethods)) { + throw new InvalidArgumentException(sprintf( + 'Method "%s" is not valid. Allowed methods are %s', + $method, + implode(', ', $allowedMethods) + )); + } + + $parameters = array_merge($this->defaultParameters, $parameters); + + $url = $this->url . $path; + + if (self::METHOD_GET === $method && sizeof($parameters)) { + $url .= '?' . http_build_query($parameters, '', '&'); + } + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($ch, CURLOPT_FAILONERROR, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $verify); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $verify); + + if (!$debug) { + curl_setopt($ch, CURLOPT_TIMEOUT, (int) $timeout); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, (int) $timeout); + } else { + curl_setopt($ch, CURLOPT_TIMEOUT_MS, (int) $timeout + ($this->retry * 2000)); + } + + if (self::METHOD_POST === $method) { + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters); + } + + $responseBody = curl_exec($ch); + $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $errno = curl_errno($ch); + $error = curl_error($ch); + + curl_close($ch); + + if ($errno && in_array($errno, array(6, 7, 28, 34, 35)) && $this->retry < 3) { + $errno = null; + $error = null; + $this->retry += 1; + $this->makeRequest( + $path, + $method, + $parameters, + $timeout, + $verify, + $debug + ); + } + + if ($errno) { + throw new CurlException($error, $errno); + } + + return new RetailcrmApiResponse($statusCode, $responseBody); + } + + public function getRetry() + { + return $this->retry; + } +} diff --git a/system/library/retailcrm/RetailcrmProxy.php b/system/library/retailcrm/RetailcrmProxy.php new file mode 100644 index 0000000..f99f740 --- /dev/null +++ b/system/library/retailcrm/RetailcrmProxy.php @@ -0,0 +1,43 @@ +api = new RetailcrmApiClient($url, $key); + $this->log = $log; + } + + public function __call($method, $arguments) + { + try { + $response = call_user_func_array(array($this->api, $method), $arguments); + + if (!$response->isSuccessful()) { + error_log("[$method] " . $response->getErrorMsg() . "\n", 3, $this->log); + if (isset($response['errors'])) { + $error = implode("\n", $response['errors']); + error_log($error . "\n", 3, $this->log); + } + $response = false; + } + + return $response; + } catch (CurlException $e) { + error_log("[$method] " . $e->getMessage() . "\n", 3, $this->log); + return false; + } catch (InvalidJsonException $e) { + error_log("[$method] " . $e->getMessage() . "\n", 3, $this->log); + return false; + } + } + +} diff --git a/system/library/retailcrm/bootstrap.php b/system/library/retailcrm/bootstrap.php new file mode 100644 index 0000000..7c0cc34 --- /dev/null +++ b/system/library/retailcrm/bootstrap.php @@ -0,0 +1,99 @@ + + * @author Alex Lushpai + */ +class RetailcrmAutoloader +{ + /** + * File extension as a string. Defaults to ".php". + */ + protected static $fileExt = '.php'; + + /** + * The top level directory where recursion will begin. + * + */ + protected static $pathTop; + + /** + * Autoload function for registration with spl_autoload_register + * + * Looks recursively through project directory and loads class files based on + * filename match. + * + * @param string $className + */ + public static function loader($className) + { + $directory = new RecursiveDirectoryIterator(self::$pathTop); + $fileIterator = new RecursiveIteratorIterator($directory); + $filename = $className . self::$fileExt; + + foreach ($fileIterator as $file) { + if (strtolower($file->getFilename()) === strtolower($filename) && $file->isReadable()) { + include_once $file->getPathname(); + } + } + + } + + /** + * Sets the $fileExt property + * + * @param string $fileExt The file extension used for class files. Default is "php". + */ + public static function setFileExt($fileExt) + { + self::$fileExt = $fileExt; + } + + /** + * Sets the $path property + * + * @param string $path The path representing the top level where recursion should + * begin. Defaults to the current directory. + */ + public static function setPath($path) + { + self::$pathTop = $path; + } + +} + +RetailcrmAutoloader::setPath(realpath(dirname(__FILE__))); +RetailcrmAutoloader::setFileExt('.php'); +spl_autoload_register('RetailcrmAutoloader::loader'); diff --git a/vqmod/xml/retailcrm_create_order.xml b/vqmod/xml/retailcrm_create_order.xml new file mode 100644 index 0000000..eeb2704 --- /dev/null +++ b/vqmod/xml/retailcrm_create_order.xml @@ -0,0 +1,40 @@ + + + Send order to RetailCRM when it created + 1.5.x + 2.3.x + retailcrm.ru + + + + + load->model('retailcrm/order'); + $this->model_retailcrm_order->sendToCrm($data, $order_id); + ]]> + + + + + + db->query("UPDATE `" . DB_PREFIX . "order` SET total = '" . (float)$total . "', affiliate_id = '" . (int)$affiliate_id . "', commission = '" . (float)$commission . "' WHERE order_id = '" . (int)$order_id . "'");]]> + load->model('setting/setting'); + $status = $this->model_setting_setting->getSetting('retailcrm'); + + if (!empty($data['order_status_id'])) { + $data['order_status'] = $status['retailcrm_status'][$data['order_status_id']]; + } + + $this->load->model('retailcrm/order'); + if (isset ($order_query)) { + $this->model_retailcrm_order->changeInCrm($data, $order_id); + } else { + $this->model_retailcrm_order->sendToCrm($data, $order_id); + } + } + ]]> + + +