Installation & options. v0.1b
This commit is contained in:
parent
0dddab4bda
commit
8e7fdf7bca
435
intaro.crm/classes/general/ICrmApi.php
Normal file
435
intaro.crm/classes/general/ICrmApi.php
Normal file
@ -0,0 +1,435 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class ICrmApi
|
||||||
|
{
|
||||||
|
protected static $jsonReplaceSource = array(
|
||||||
|
'\u0410','\u0430','\u0411','\u0431','\u0412','\u0432','\u0413','\u0433',
|
||||||
|
'\u0414','\u0434','\u0415','\u0435','\u0401','\u0451','\u0416','\u0436',
|
||||||
|
'\u0417','\u0437','\u0418','\u0438','\u0419','\u0439','\u041a','\u043a',
|
||||||
|
'\u041b','\u043b','\u041c','\u043c','\u041d','\u043d','\u041e','\u043e',
|
||||||
|
'\u041f','\u043f','\u0420','\u0440','\u0421','\u0441','\u0422','\u0442',
|
||||||
|
'\u0423','\u0443','\u0424','\u0444','\u0425','\u0445','\u0426','\u0446',
|
||||||
|
'\u0427','\u0447','\u0428','\u0448','\u0429','\u0449','\u042a','\u044a',
|
||||||
|
'\u042b','\u044b','\u042c','\u044c','\u042d','\u044d','\u042e','\u044e',
|
||||||
|
'\u042f','\u044f'
|
||||||
|
);
|
||||||
|
|
||||||
|
protected static $jsonReplaceTarget = array(
|
||||||
|
'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г',
|
||||||
|
'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж',
|
||||||
|
'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к',
|
||||||
|
'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о',
|
||||||
|
'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т',
|
||||||
|
'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц',
|
||||||
|
'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ',
|
||||||
|
'Ы', 'ы', 'Ь', 'ь', 'Э', 'э', 'Ю', 'ю',
|
||||||
|
'Я', 'я'
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
protected $apiUrl;
|
||||||
|
protected $apiKey;
|
||||||
|
protected $apiVersion = '1';
|
||||||
|
protected $lastError;
|
||||||
|
protected $statusCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $crmUrl - адрес CRM
|
||||||
|
* @param string $apiKey - ключ для работы с api
|
||||||
|
*/
|
||||||
|
public function __construct($crmUrl, $apiKey)
|
||||||
|
{
|
||||||
|
$this->apiUrl = $crmUrl.'/api/v'.$this->apiVersion.'/';
|
||||||
|
$this->apiKey = $apiKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function getStatusCode()
|
||||||
|
{
|
||||||
|
return $this->statusCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Получение кода статуса и сообщения об ошибке */
|
||||||
|
public function getLastError()
|
||||||
|
{
|
||||||
|
if (!is_null($this->lastError))
|
||||||
|
return $this->statusCode . ' ' . $this->lastError;
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Псообщения об ошибке */
|
||||||
|
public function getLastErrorMessage()
|
||||||
|
{
|
||||||
|
return $this->lastError;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Методы для работы с заказами */
|
||||||
|
/**
|
||||||
|
* Получение заказа по id
|
||||||
|
*
|
||||||
|
* @param string $id - идентификатор заказа
|
||||||
|
* @return array - информация о заказе
|
||||||
|
*/
|
||||||
|
public function orderGet($id)
|
||||||
|
{
|
||||||
|
$url = $this->apiUrl.'orders/'.$id;
|
||||||
|
$result = $this->curlRequest($url);
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Создание заказа
|
||||||
|
*
|
||||||
|
* @param array $order- информация о заказе
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function orderCreate($order)
|
||||||
|
{
|
||||||
|
$dataJson = json_encode($order);
|
||||||
|
$dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget,
|
||||||
|
$dataJson);
|
||||||
|
$parameters = array();
|
||||||
|
$parameters['order'] = $dataJson;
|
||||||
|
|
||||||
|
$url = $this->apiUrl.'orders/create';
|
||||||
|
$result = $this->curlRequest($url, $parameters, 'POST');
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Изменение заказа
|
||||||
|
*
|
||||||
|
* @param array $order- информация о заказе
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function orderEdit($order)
|
||||||
|
{
|
||||||
|
$dataJson = json_encode($order);
|
||||||
|
$dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget,
|
||||||
|
$dataJson);
|
||||||
|
$parameters = array();
|
||||||
|
$parameters['order'] = $dataJson;
|
||||||
|
|
||||||
|
$url = $this->apiUrl.'orders/'.$order['id'].'/edit';
|
||||||
|
$result = $this->curlRequest($url, $parameters, 'POST');
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Загрузка нескольких заказов
|
||||||
|
*
|
||||||
|
* @param array $orders - массив заказов
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function orderUpload($orders)
|
||||||
|
{
|
||||||
|
$dataJson = json_encode($orders);
|
||||||
|
$dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget,
|
||||||
|
$dataJson);
|
||||||
|
$parameters = array();
|
||||||
|
$parameters['orders'] = $dataJson;
|
||||||
|
|
||||||
|
$url = $this->apiUrl.'orders/upload';
|
||||||
|
$result = $this->curlRequest($url, $parameters, 'POST');
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Удаление заказа
|
||||||
|
*
|
||||||
|
* @param string $id - идентификатор заказа
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function orderDelete($id)
|
||||||
|
{
|
||||||
|
$url = $this->apiUrl.'orders/'.$id.'/delete';
|
||||||
|
$result = $this->curlRequest($url, array(), 'POST');
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получение последних измененных заказов
|
||||||
|
*
|
||||||
|
* @param DateTime $startDate - начальная дата выборки
|
||||||
|
* @param DateTime $endDate - конечная дата
|
||||||
|
* @param int $limit - ограничение на размер выборки
|
||||||
|
* @param int $offset - сдвиг
|
||||||
|
* @return array - массив заказов
|
||||||
|
*/
|
||||||
|
public function orderHistory($startDate = null, $endDate = null, $limit = 100, $offset = 0)
|
||||||
|
{
|
||||||
|
$url = $this->apiUrl.'orders/history';
|
||||||
|
$parameters = array();
|
||||||
|
$parameters['startDate'] = $startDate;
|
||||||
|
$parameters['endDate'] = $endDate;
|
||||||
|
$parameters['limit'] = $limit;
|
||||||
|
$parameters['offset'] = $offset;
|
||||||
|
|
||||||
|
$result = $this->curlRequest($url, $parameters);
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Методы для работы с клиентами */
|
||||||
|
/**
|
||||||
|
* Получение клиента по id
|
||||||
|
*
|
||||||
|
* @param string $id - идентификатор
|
||||||
|
* @return array - информация о клиенте
|
||||||
|
*/
|
||||||
|
public function customerGet($id)
|
||||||
|
{
|
||||||
|
$url = $this->apiUrl.'customers/'.$id;
|
||||||
|
$result = $this->curlRequest($url);
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Создание клиента
|
||||||
|
*
|
||||||
|
* @param array $customer - информация о клиенте
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function customerCreate($customer)
|
||||||
|
{
|
||||||
|
$dataJson = json_encode($customer);
|
||||||
|
$dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget,
|
||||||
|
$dataJson);
|
||||||
|
$parameters = array();
|
||||||
|
$parameters['customer'] = $dataJson;
|
||||||
|
|
||||||
|
$url = $this->apiUrl.'customers/create';
|
||||||
|
$result = $this->curlRequest($url, $parameters, 'POST');
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Редактирование клиента
|
||||||
|
*
|
||||||
|
* @param array $customer - информация о клиенте
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function customerEdit($customer)
|
||||||
|
{
|
||||||
|
$dataJson = json_encode($customer);
|
||||||
|
$dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget,
|
||||||
|
$dataJson);
|
||||||
|
$parameters = array();
|
||||||
|
$parameters['customer'] = $dataJson;
|
||||||
|
|
||||||
|
$url = $this->apiUrl.'customers/'.$customer['id'].'/edit';
|
||||||
|
$result = $this->curlRequest($url, $parameters, 'POST');
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Удаление клиента
|
||||||
|
*
|
||||||
|
* @param string $id - идентификатор
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function customerDelete($id)
|
||||||
|
{
|
||||||
|
$url = $this->apiUrl.'customers/'.$id.'/delete';
|
||||||
|
$result = $this->curlRequest($url, array(), 'POST');
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получение списка заказов клиента
|
||||||
|
*
|
||||||
|
* @param string $id - идентификатор клиента
|
||||||
|
* @param DateTime $startDate - начальная дата выборки
|
||||||
|
* @param DateTime $endDate - конечная дата
|
||||||
|
* @param int $limit - ограничение на размер выборки
|
||||||
|
* @param int $offset - сдвиг
|
||||||
|
* @return array - массив заказов
|
||||||
|
*/
|
||||||
|
public function customerOrdersList($id, $startDate = null, $endDate = null,
|
||||||
|
$limit = 100, $offset = 0)
|
||||||
|
{
|
||||||
|
$url = $this->apiUrl.'customers/'.$id.'/orders';
|
||||||
|
$parameters = array();
|
||||||
|
$parameters['startDate'] = $startDate;
|
||||||
|
$parameters['endDate'] = $endDate;
|
||||||
|
$parameters['limit'] = $limit;
|
||||||
|
$parameters['offset'] = $offset;
|
||||||
|
|
||||||
|
$result = $this->curlRequest($url, $parameters);
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Методы для работы со справочниками */
|
||||||
|
/**
|
||||||
|
* Получение списка типов доставки
|
||||||
|
*
|
||||||
|
* @return array - массив типов доставки
|
||||||
|
*/
|
||||||
|
public function deliveryTypesList()
|
||||||
|
{
|
||||||
|
$url = $this->apiUrl.'reference/delivery-types';
|
||||||
|
$result = $this->curlRequest($url);
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Редактирование типа доставки
|
||||||
|
*
|
||||||
|
* @param array $deliveryType - информация о типе доставки
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function deliveryTypeEdit($deliveryType)
|
||||||
|
{
|
||||||
|
$dataJson = json_encode($deliveryType);
|
||||||
|
$dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget,
|
||||||
|
$dataJson);
|
||||||
|
$parameters = array();
|
||||||
|
$parameters['deliveryType'] = $dataJson;
|
||||||
|
|
||||||
|
$url = $this->apiUrl.'delivery-types/'.$deliveryType['code'].'/edit';
|
||||||
|
$result = $this->curlRequest($url, $parameters, 'POST');
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получение списка типов оплаты
|
||||||
|
*
|
||||||
|
* @return array - массив типов оплаты
|
||||||
|
*/
|
||||||
|
public function paymentTypesList()
|
||||||
|
{
|
||||||
|
$url = $this->apiUrl.'reference/payment-types';
|
||||||
|
$result = $this->curlRequest($url);
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Редактирование типа оплаты
|
||||||
|
*
|
||||||
|
* @param array $paymentType - информация о типе оплаты
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function paymentTypesEdit($paymentType)
|
||||||
|
{
|
||||||
|
$dataJson = json_encode($paymentType);
|
||||||
|
$dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget,
|
||||||
|
$dataJson);
|
||||||
|
$parameters = array();
|
||||||
|
$parameters['paymentType'] = $dataJson;
|
||||||
|
|
||||||
|
$url = $this->apiUrl.'payment-types/'.$paymentType['code'].'/edit';
|
||||||
|
$result = $this->curlRequest($url, $parameters, 'POST');
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получение списка статусов оплаты
|
||||||
|
*
|
||||||
|
* @return array - массив статусов оплаты
|
||||||
|
*/
|
||||||
|
public function paymentStatusesList()
|
||||||
|
{
|
||||||
|
$url = $this->apiUrl.'reference/payment-statuses';
|
||||||
|
$result = $this->curlRequest($url);
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Редактирование статуса оплаты
|
||||||
|
*
|
||||||
|
* @param array $paymentStatus - информация о статусе оплаты
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function paymentStatusesEdit($paymentStatus)
|
||||||
|
{
|
||||||
|
$dataJson = json_encode($paymentStatus);
|
||||||
|
$dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget,
|
||||||
|
$dataJson);
|
||||||
|
$parameters = array();
|
||||||
|
$parameters['paymentStatus'] = $dataJson;
|
||||||
|
|
||||||
|
$url = $this->apiUrl.'payment-statuses/'.$paymentStatus['code'].'/edit';
|
||||||
|
$result = $this->curlRequest($url, $parameters, 'POST');
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получение списка типов заказа
|
||||||
|
*
|
||||||
|
* @return array - массив типов заказа
|
||||||
|
*/
|
||||||
|
public function orderTypesList()
|
||||||
|
{
|
||||||
|
$url = $this->apiUrl.'reference/order-types';
|
||||||
|
$result = $this->curlRequest($url);
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Редактирование типа заказа
|
||||||
|
*
|
||||||
|
* @param array $paymentType - информация о типе заказа
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function orderTypesEdit($orderType)
|
||||||
|
{
|
||||||
|
$dataJson = json_encode($orderType);
|
||||||
|
$dataJson = str_replace(self::$jsonReplaceSource, self::$jsonReplaceTarget,
|
||||||
|
$dataJson);
|
||||||
|
$parameters = array();
|
||||||
|
$parameters['orderType'] = $dataJson;
|
||||||
|
|
||||||
|
$url = $this->apiUrl.'order-types/'.$paymentType['code'].'/edit';
|
||||||
|
$result = $this->curlRequest($url, $parameters, 'POST');
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function curlRequest($url, $parameters = null, $method = 'GET', $format = 'json')
|
||||||
|
{
|
||||||
|
$parameters['apiKey'] = $this->apiKey;
|
||||||
|
|
||||||
|
if ($method == 'GET' && !is_null($parameters))
|
||||||
|
$url .= '?'.http_build_query($parameters);
|
||||||
|
|
||||||
|
$ch = curl_init();
|
||||||
|
curl_setopt($ch, CURLOPT_URL, $url);
|
||||||
|
curl_setopt($ch, CURLOPT_FAILONERROR, FALSE);
|
||||||
|
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects
|
||||||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return into a variable
|
||||||
|
curl_setopt($ch, CURLOPT_TIMEOUT, 6); // times out after 6s
|
||||||
|
|
||||||
|
if ($method == 'POST')
|
||||||
|
{
|
||||||
|
curl_setopt($ch, CURLOPT_POST, true);
|
||||||
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = curl_exec($ch);
|
||||||
|
$this->statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||||
|
|
||||||
|
if (curl_errno($ch))
|
||||||
|
{
|
||||||
|
$this->lastError = 'Curl error: ' . curl_error($ch);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
curl_close($ch);
|
||||||
|
|
||||||
|
$result = (array)json_decode($response, true);
|
||||||
|
if ($result['success'] == false)
|
||||||
|
{
|
||||||
|
$this->lastError = $result['errorMsg'];
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->lastError = null;
|
||||||
|
unset($result['success']);
|
||||||
|
if (count($result) == 0)
|
||||||
|
return true;
|
||||||
|
return reset($result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
15
intaro.crm/include.php
Normal file
15
intaro.crm/include.php
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Add autoload classes here
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
CModule::AddAutoloadClasses(
|
||||||
|
'intaro.crm', // module name
|
||||||
|
array (
|
||||||
|
'IntaroCrmRestApi' => 'classes/general/IntaroCrmRestApi.php',
|
||||||
|
'ICrmApi' => 'classes/general/ICrmApi.php'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
?>
|
269
intaro.crm/install/index.php
Normal file
269
intaro.crm/install/index.php
Normal file
@ -0,0 +1,269 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Module Install/Uninstall script
|
||||||
|
* Module name: intaro.crm
|
||||||
|
* Class name: intaro_crm
|
||||||
|
*/
|
||||||
|
|
||||||
|
global $MESS;
|
||||||
|
IncludeModuleLangFile(__FILE__);
|
||||||
|
if (class_exists('intaro_crm'))
|
||||||
|
return;
|
||||||
|
|
||||||
|
class intaro_crm extends CModule
|
||||||
|
{
|
||||||
|
var $MODULE_ID = 'intaro.crm';
|
||||||
|
var $MODULE_VERSION;
|
||||||
|
var $MODULE_VERSION_DATE;
|
||||||
|
var $MODULE_NAME;
|
||||||
|
var $MODULE_DESCRIPTION;
|
||||||
|
var $MODULE_GROUP_RIGHTS = 'N';
|
||||||
|
var $PARTNER_NAME;
|
||||||
|
var $PARTNER_URI;
|
||||||
|
var $INTARO_CRM_API;
|
||||||
|
|
||||||
|
var $CRM_API_HOST_OPTION = 'api_host';
|
||||||
|
var $CRM_API_KEY_OPTION = 'api_key';
|
||||||
|
var $CRM_DELIVERY_TYPES_ARR = 'deliv_types_arr';
|
||||||
|
var $CRM_PAYMENT_TYPES = 'pay_types_arr';
|
||||||
|
var $CRM_PAYMENT_STATUSES = 'pay_statuses_arr';
|
||||||
|
|
||||||
|
var $INSTALL_PATH;
|
||||||
|
|
||||||
|
function intaro_crm()
|
||||||
|
{
|
||||||
|
$arModuleVersion = array();
|
||||||
|
$path = str_replace("\\", "/", __FILE__);
|
||||||
|
$path = substr($path, 0, strlen($path) - strlen("/index.php"));
|
||||||
|
$this->INSTALL_PATH = $path;
|
||||||
|
include($path."/version.php");
|
||||||
|
$this->MODULE_VERSION = $arModuleVersion["VERSION"];
|
||||||
|
$this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"];
|
||||||
|
$this->MODULE_NAME = GetMessage('MODULE_NAME');
|
||||||
|
$this->MODULE_DESCRIPTION = GetMessage('MODULE_DESCRIPTION');
|
||||||
|
$this->PARTNER_NAME = GetMessage('MODULE_PARTNER_NAME');
|
||||||
|
$this->PARTNER_URI = GetMessage('MODULE_PARTNER_URI');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Functions DoInstall and DoUninstall are
|
||||||
|
* All other functions are optional
|
||||||
|
*/
|
||||||
|
|
||||||
|
function DoInstall()
|
||||||
|
{
|
||||||
|
global $APPLICATION, $step, $arResult;
|
||||||
|
|
||||||
|
include($this->INSTALL_PATH . '/../classes/general/IntaroCrmRestApi.php');
|
||||||
|
|
||||||
|
$step = intval($_REQUEST['step']);
|
||||||
|
|
||||||
|
if ($step <= 1) {
|
||||||
|
$APPLICATION->IncludeAdminFile(
|
||||||
|
GetMessage('MODULE_INSTALL_TITLE'),
|
||||||
|
$_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . $this->MODULE_ID . '/install/step1.php'
|
||||||
|
);
|
||||||
|
} else if ($step == 2) {
|
||||||
|
if(!CModule::IncludeModule("sale")) {
|
||||||
|
//handler
|
||||||
|
}
|
||||||
|
|
||||||
|
$api_host = htmlspecialchars(trim($_POST[$this->CRM_API_HOST_OPTION]));
|
||||||
|
$api_key = htmlspecialchars(trim($_POST[$this->CRM_API_KEY_OPTION]));
|
||||||
|
|
||||||
|
if(!$api_host || !$api_key) {
|
||||||
|
$arResult['errCode'] = 'ERR_FIELDS_API_HOST';
|
||||||
|
$APPLICATION->IncludeAdminFile(
|
||||||
|
GetMessage('MODULE_INSTALL_TITLE'),
|
||||||
|
$_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . $this->MODULE_ID . '/install/step1.php'
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->INTARO_CRM_API = new IntaroCrmRestApi($api_host, $api_key);
|
||||||
|
|
||||||
|
$this->INTARO_CRM_API->paymentStatusesList();
|
||||||
|
|
||||||
|
//check connection & apiKey valid
|
||||||
|
if((int) $this->INTARO_CRM_API->getStatusCode() != 200) {
|
||||||
|
$arResult['errCode'] = 'ERR_' . $this->INTARO_CRM_API->getStatusCode();
|
||||||
|
|
||||||
|
$APPLICATION->IncludeAdminFile(
|
||||||
|
GetMessage('MODULE_INSTALL_TITLE'),
|
||||||
|
$_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . $this->MODULE_ID . '/install/step1.php'
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
COption::SetOptionString($this->MODULE_ID, $this->CRM_API_HOST_OPTION, $api_host);
|
||||||
|
COption::SetOptionString($this->MODULE_ID, $this->CRM_API_KEY_OPTION, $api_key);
|
||||||
|
|
||||||
|
//prepare crm lists
|
||||||
|
//$orderTypes = $this->INTARO_CRM_API->orderTypesList(); -- no such method
|
||||||
|
$arResult['deliveryTypesList'] = $this->INTARO_CRM_API->deliveryTypesList();
|
||||||
|
$arResult['paymentTypesList'] = $this->INTARO_CRM_API->paymentTypesList();
|
||||||
|
$arResult['paymentStatusesList'] = $this->INTARO_CRM_API->paymentStatusesList();
|
||||||
|
|
||||||
|
//bitrix orderTypesList
|
||||||
|
/*
|
||||||
|
* ...some code here...
|
||||||
|
*/
|
||||||
|
|
||||||
|
//bitrix deliveryTypesList
|
||||||
|
$dbDeliveryTypesList = CSaleDelivery::GetList(
|
||||||
|
array(
|
||||||
|
"SORT" => "ASC",
|
||||||
|
"NAME" => "ASC"
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"ACTIVE" => "Y",
|
||||||
|
),
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
array()
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($arDeliveryTypesList = $dbDeliveryTypesList->Fetch()) {
|
||||||
|
do {
|
||||||
|
$arResult['bitrixDeliveryTypesList'][] = $arDeliveryTypesList;
|
||||||
|
} while ($arDeliveryTypesList = $dbDeliveryTypesList->Fetch());
|
||||||
|
}
|
||||||
|
|
||||||
|
//bitrix paymentTypesList
|
||||||
|
$dbPaymentTypesList = CSalePaySystem::GetList(
|
||||||
|
array(
|
||||||
|
"SORT" => "ASC",
|
||||||
|
"NAME" => "ASC"
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"ACTIVE" => "Y"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($arPaymentTypesList = $dbPaymentTypesList->Fetch()) {
|
||||||
|
do {
|
||||||
|
$arResult['bitrixPaymentTypesList'][] = $arPaymentTypesList;
|
||||||
|
} while ($arPaymentTypesList = $dbPaymentTypesList->Fetch());
|
||||||
|
}
|
||||||
|
|
||||||
|
//bitrix paymentStatusesList
|
||||||
|
$dbPaymentStatusesList = CSaleStatus::GetList(
|
||||||
|
array(
|
||||||
|
"SORT" => "ASC",
|
||||||
|
"NAME" => "ASC"
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"LID" => "ru", //ru
|
||||||
|
"ACTIVE" => "Y"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($arPaymentStatusesList = $dbPaymentStatusesList->Fetch()) {
|
||||||
|
do {
|
||||||
|
$arResult['bitrixPaymentStatusesList'][] = $arPaymentStatusesList;
|
||||||
|
} while ($arPaymentStatusesList = $dbPaymentStatusesList->Fetch());
|
||||||
|
}
|
||||||
|
|
||||||
|
$APPLICATION->IncludeAdminFile(
|
||||||
|
GetMessage('MODULE_INSTALL_TITLE'),
|
||||||
|
$_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . $this->MODULE_ID . '/install/step2.php'
|
||||||
|
);
|
||||||
|
|
||||||
|
} else if ($step == 3) {
|
||||||
|
if(!CModule::IncludeModule("sale")) {
|
||||||
|
//handler
|
||||||
|
}
|
||||||
|
|
||||||
|
//bitrix deliveryTypesList
|
||||||
|
$dbDeliveryTypesList = CSaleDelivery::GetList(
|
||||||
|
array(
|
||||||
|
"SORT" => "ASC",
|
||||||
|
"NAME" => "ASC"
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"ACTIVE" => "Y",
|
||||||
|
),
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
array()
|
||||||
|
);
|
||||||
|
|
||||||
|
//form delivery types ids arr
|
||||||
|
$deliveryTypesArr = array();
|
||||||
|
if ($arDeliveryTypesList = $dbDeliveryTypesList->Fetch()) {
|
||||||
|
do {
|
||||||
|
$deliveryTypesArr[$arDeliveryTypesList['ID']] = $_POST['delivery-type-' . $arDeliveryTypesList['ID']];
|
||||||
|
} while ($arDeliveryTypesList = $dbDeliveryTypesList->Fetch());
|
||||||
|
}
|
||||||
|
|
||||||
|
//bitrix paymentTypesList
|
||||||
|
$dbPaymentTypesList = CSalePaySystem::GetList(
|
||||||
|
array(
|
||||||
|
"SORT" => "ASC",
|
||||||
|
"NAME" => "ASC"
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"ACTIVE" => "Y"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
//form payment types ids arr
|
||||||
|
$paymentTypesArr = array();
|
||||||
|
if ($arPaymentTypesList = $dbPaymentTypesList->Fetch()) {
|
||||||
|
do {
|
||||||
|
$paymentTypesArr[$arPaymentTypesList['ID']] = $_POST['payment-type-' . $arPaymentTypesList['ID']];
|
||||||
|
} while ($arPaymentTypesList = $dbPaymentTypesList->Fetch());
|
||||||
|
}
|
||||||
|
|
||||||
|
//bitrix paymentStatusesList
|
||||||
|
$dbPaymentStatusesList = CSaleStatus::GetList(
|
||||||
|
array(
|
||||||
|
"SORT" => "ASC",
|
||||||
|
"NAME" => "ASC"
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"LID" => "ru", //ru
|
||||||
|
"ACTIVE" => "Y"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
//form payment statuses ids arr
|
||||||
|
$paymentStatusesArr = array();
|
||||||
|
if ($arPaymentStatusesList = $dbPaymentStatusesList->Fetch()) {
|
||||||
|
do {
|
||||||
|
$paymentStatusesArr[$arPaymentStatusesList['ID']] = $_POST['payment-status-' . $arPaymentStatusesList['ID']];
|
||||||
|
} while ($arPaymentStatusesList = $dbPaymentStatusesList->Fetch());
|
||||||
|
}
|
||||||
|
|
||||||
|
COption::SetOptionString($this->MODULE_ID, $this->CRM_DELIVERY_TYPES_ARR, serialize($deliveryTypesArr));
|
||||||
|
COption::SetOptionString($this->MODULE_ID, $this->CRM_PAYMENT_TYPES, serialize($paymentTypesArr));
|
||||||
|
COption::SetOptionString($this->MODULE_ID, $this->CRM_PAYMENT_STATUSES, serialize($paymentStatusesArr));
|
||||||
|
RegisterModule($this->MODULE_ID);
|
||||||
|
|
||||||
|
$APPLICATION->IncludeAdminFile(
|
||||||
|
GetMessage('MODULE_INSTALL_TITLE'),
|
||||||
|
$_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . $this->MODULE_ID . '/install/step3.php'
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function DoUninstall() {
|
||||||
|
global $APPLICATION;
|
||||||
|
|
||||||
|
UnRegisterModule($this->MODULE_ID);
|
||||||
|
|
||||||
|
COption::RemoveOption($this->MODULE_ID, $this->CRM_API_HOST_OPTION);
|
||||||
|
COption::RemoveOption($this->MODULE_ID, $this->CRM_API_KEY_OPTION);
|
||||||
|
COption::RemoveOption($this->MODULE_ID, $this->CRM_DELIVERY_TYPES_ARR);
|
||||||
|
COption::RemoveOption($this->MODULE_ID, $this->CRM_PAYMENT_TYPES);
|
||||||
|
COption::RemoveOption($this->MODULE_ID, $this->CRM_PAYMENT_STATUSES);
|
||||||
|
|
||||||
|
$APPLICATION->IncludeAdminFile(
|
||||||
|
GetMessage('MODULE_UNINSTALL_TITLE'),
|
||||||
|
$_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . $this->MODULE_ID . '/install/unstep1.php'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
31
intaro.crm/install/step1.php
Normal file
31
intaro.crm/install/step1.php
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<?php IncludeModuleLangFile(__FILE__); ?>
|
||||||
|
|
||||||
|
<?php if($arResult['errCode']) echo CAdminMessage::ShowMessage(GetMessage($arResult['errCode'])); ?>
|
||||||
|
|
||||||
|
<div class="adm-detail-content-item-block">
|
||||||
|
<form action="<?php echo $APPLICATION->GetCurPage() ?>" method="POST">
|
||||||
|
<?php echo bitrix_sessid_post(); ?>
|
||||||
|
<input type="hidden" name="lang" value="<?php echo LANGUAGE_ID ?>">
|
||||||
|
<input type="hidden" name="id" value="intaro.crm">
|
||||||
|
<input type="hidden" name="install" value="Y">
|
||||||
|
<input type="hidden" name="step" value="2">
|
||||||
|
|
||||||
|
<table class="adm-detail-content-table edit-table" id="edit1_edit_table">
|
||||||
|
<tbody>
|
||||||
|
<tr class="heading">
|
||||||
|
<td colspan="2"><b><?php echo GetMessage('STEP_NAME'); ?></b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-l"><?php echo GetMessage('ICRM_API_HOST'); ?></td>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-r"><input type="text" id="api_host" name="api_host" value="http://bitrix.beta.intarocrm.ru"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-l"><?php echo GetMessage('ICRM_API_KEY'); ?></td>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-r"><input type="text" id="api_key" name="api_key" value="test2"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<input type="submit" name="inst" value="<?php echo GetMessage("MOD_NEXT_STEP"); ?>" class="adm-btn-save">
|
||||||
|
</form>
|
||||||
|
</div>
|
81
intaro.crm/install/step2.php
Normal file
81
intaro.crm/install/step2.php
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
<?php IncludeModuleLangFile(__FILE__); ?>
|
||||||
|
|
||||||
|
<div class="adm-detail-content-item-block">
|
||||||
|
<form action="<?php echo $APPLICATION->GetCurPage() ?>" method="POST">
|
||||||
|
<?php echo bitrix_sessid_post(); ?>
|
||||||
|
<input type="hidden" name="lang" value="<?php echo LANGUAGE_ID ?>">
|
||||||
|
<input type="hidden" name="id" value="intaro.crm">
|
||||||
|
<input type="hidden" name="install" value="Y">
|
||||||
|
<input type="hidden" name="step" value="3">
|
||||||
|
|
||||||
|
<table class="adm-detail-content-table edit-table" id="edit1_edit_table">
|
||||||
|
<tbody>
|
||||||
|
<tr class="heading">
|
||||||
|
<td colspan="2"><b><?php echo GetMessage('STEP_NAME'); ?></b></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="heading">
|
||||||
|
<td colspan="2"><b><?php echo GetMessage('DELIVERY_TYPES_LIST'); ?></b></td>
|
||||||
|
</tr>
|
||||||
|
<?php foreach($arResult['bitrixDeliveryTypesList'] as $bitrixDeliveryType): ?>
|
||||||
|
<tr>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-l" name="<?php echo $bitrixDeliveryType['ID']; ?>">
|
||||||
|
<?php echo $bitrixDeliveryType['NAME']; ?>
|
||||||
|
</td>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-r">
|
||||||
|
<select name="delivery-type-<?php echo $bitrixDeliveryType['ID']; ?>" class="typeselect">
|
||||||
|
<option value="" selected=""></option>
|
||||||
|
<?php foreach($arResult['deliveryTypesList'] as $deliveryType): ?>
|
||||||
|
<option value="<?php echo $deliveryType['code']; ?>">
|
||||||
|
<?php echo $APPLICATION->ConvertCharset($deliveryType['name'], 'utf-8', SITE_CHARSET); ?>
|
||||||
|
</option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
<tr class="heading">
|
||||||
|
<td colspan="2"><b><?php echo GetMessage('PAYMENT_TYPES_LIST'); ?></b></td>
|
||||||
|
</tr>
|
||||||
|
<?php foreach($arResult['bitrixPaymentTypesList'] as $bitrixPaymentType): ?>
|
||||||
|
<tr>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-l" name="<?php echo $bitrixPaymentType['ID']; ?>">
|
||||||
|
<?php echo $bitrixPaymentType['NAME']; ?>
|
||||||
|
</td>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-r">
|
||||||
|
<select name="payment-type-<?php echo $bitrixPaymentType['ID']; ?>" class="typeselect">
|
||||||
|
<option value="" selected=""></option>
|
||||||
|
<?php foreach($arResult['paymentTypesList'] as $paymentType): ?>
|
||||||
|
<option value="<?php echo $paymentType['code']; ?>">
|
||||||
|
<?php echo $APPLICATION->ConvertCharset($paymentType['name'], 'utf-8', SITE_CHARSET); ?>
|
||||||
|
</option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
<tr class="heading">
|
||||||
|
<td colspan="2"><b><?php echo GetMessage('PAYMENT_STATUS_LIST'); ?></b></td>
|
||||||
|
</tr>
|
||||||
|
<?php foreach($arResult['bitrixPaymentStatusesList'] as $bitrixPaymentStatus): ?>
|
||||||
|
<tr>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-l" name="<?php echo $bitrixPaymentStatus['ID']; ?>">
|
||||||
|
<?php echo $bitrixPaymentStatus['NAME']; ?>
|
||||||
|
</td>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-r">
|
||||||
|
<select name="payment-status-<?php echo $bitrixPaymentStatus['ID']; ?>" class="typeselect">
|
||||||
|
<option value="" selected=""></option>
|
||||||
|
<?php foreach($arResult['paymentStatusesList'] as $paymentStatus): ?>
|
||||||
|
<option value="<?php echo $paymentStatus['code']; ?>">
|
||||||
|
<?php echo $APPLICATION->ConvertCharset($paymentStatus['name'], 'utf-8', SITE_CHARSET); ?>
|
||||||
|
</option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<input type="submit" name="inst" value="<?php echo GetMessage("MOD_NEXT_STEP"); ?>" class="adm-btn-save">
|
||||||
|
</form>
|
||||||
|
</div>
|
10
intaro.crm/install/step3.php
Normal file
10
intaro.crm/install/step3.php
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
if(!check_bitrix_sessid()) return;
|
||||||
|
echo CAdminMessage::ShowNote(GetMessage("MOD_INST_OK")); ?>
|
||||||
|
|
||||||
|
<form action="<?php echo $APPLICATION->GetCurPage(); ?>">
|
||||||
|
<input type="hidden" name="lang" value="<?php echo LANG; ?>">
|
||||||
|
<input type="hidden" name="id" value="intaro.crm">
|
||||||
|
<input type="hidden" name="install" value="Y">
|
||||||
|
<input type="submit" name="" value="<?php echo GetMessage("MOD_BACK"); ?>">
|
||||||
|
<form>
|
10
intaro.crm/install/unstep1.php
Normal file
10
intaro.crm/install/unstep1.php
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?php IncludeModuleLangFile(__FILE__); ?>
|
||||||
|
<form action="<?php echo $APPLICATION->GetCurPage(); ?>">
|
||||||
|
<?php bitrix_sessid_post(); ?>
|
||||||
|
<input type="hidden" name="lang" value="<?php echo LANGUAGE_ID; ?>">
|
||||||
|
<input type="hidden" name="id" value="intaro.crm">
|
||||||
|
<input type="hidden" name="uninstall" value="Y">
|
||||||
|
<input type="hidden" name="step" value="2">
|
||||||
|
<?php echo CAdminMessage::ShowMessage(GetMessage("MOD_UNINST_WARN")); ?>
|
||||||
|
<input type="submit" name="inst" value="<?php echo GetMessage("MOD_UNINST_DEL"); ?>">
|
||||||
|
</form>
|
17
intaro.crm/install/unstep2.php
Normal file
17
intaro.crm/install/unstep2.php
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?if(!check_bitrix_sessid()) return;?>
|
||||||
|
<?
|
||||||
|
$errors=false;
|
||||||
|
|
||||||
|
if($errors===false):
|
||||||
|
echo CAdminMessage::ShowNote(GetMessage("MOD_UNINST_OK"));
|
||||||
|
else:
|
||||||
|
$alErrors = "";
|
||||||
|
for($i=0; $i<count($errors); $i++)
|
||||||
|
$alErrors .= $errors[$i]."<br>";
|
||||||
|
echo CAdminMessage::ShowMessage(Array("TYPE"=>"ERROR", "MESSAGE" =>GetMessage("MOD_UNINST_ERR"), "DETAILS"=>$alErrors, "HTML"=>true));
|
||||||
|
endif;
|
||||||
|
?>
|
||||||
|
<form action="<?echo $APPLICATION->GetCurPage()?>">
|
||||||
|
<input type="hidden" name="lang" value="<?echo LANG?>">
|
||||||
|
<input type="submit" name="" value="<?echo GetMessage("MOD_BACK")?>">
|
||||||
|
</form>
|
6
intaro.crm/install/version.php
Normal file
6
intaro.crm/install/version.php
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?
|
||||||
|
$arModuleVersion = array(
|
||||||
|
'VERSION' => '0.1b',
|
||||||
|
'VERSION_DATE' => '2013-08-04 18:12:00',
|
||||||
|
);
|
||||||
|
?>
|
8
intaro.crm/lang/ru/install/index.php
Normal file
8
intaro.crm/lang/ru/install/index.php
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
$MESS ['MODULE_NAME'] = 'Intaro CRM';
|
||||||
|
$MESS ['MODULE_DESCRIPTION'] = 'Система обработки заказов';
|
||||||
|
$MESS ['MODULE_PARTNER_NAME'] = 'Интаро Софт';
|
||||||
|
$MESS ['MODULE_PARTNER_URI'] = 'http://intaro.ru';
|
||||||
|
$MESS ['MODULE_INSTALL_TITLE'] = 'Установка модуля';
|
||||||
|
$MESS ['MODULE_UNINSTALL_TITLE'] = 'Удаление модуля';
|
||||||
|
?>
|
10
intaro.crm/lang/ru/install/step1.php
Normal file
10
intaro.crm/lang/ru/install/step1.php
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
$MESS ['STEP_NAME'] = 'Шаг 1';
|
||||||
|
$MESS ['MOD_NEXT_STEP'] = 'Следующий шаг';
|
||||||
|
$MESS ['ICRM_API_HOST'] = 'Адрес Intaro CRM:';
|
||||||
|
$MESS ['ICRM_API_KEY'] = 'Ключ авторизации:';
|
||||||
|
$MESS ['ERR_404'] = 'Возможно не верно введен адрес CRM.';
|
||||||
|
$MESS ['ERR_403'] = 'Не верный apiKey.';
|
||||||
|
$MESS ['ERR_0'] = 'Превышено время ожидания ответа от сервера.';
|
||||||
|
$MESS ['ERR_FIELDS_API_HOST'] = 'Не верно заполены поля.';
|
||||||
|
?>
|
7
intaro.crm/lang/ru/install/step2.php
Normal file
7
intaro.crm/lang/ru/install/step2.php
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?php
|
||||||
|
$MESS ['STEP_NAME'] = 'Шаг 2';
|
||||||
|
$MESS ['MOD_NEXT_STEP'] = 'Следующий шаг';
|
||||||
|
$MESS ['DELIVERY_TYPES_LIST'] = 'Способы доставки';
|
||||||
|
$MESS ['PAYMENT_TYPES_LIST'] = 'Способы оплаты';
|
||||||
|
$MESS ['PAYMENT_STATUS_LIST'] = 'Статусы оплаты';
|
||||||
|
?>
|
4
intaro.crm/lang/ru/install/step3.php
Normal file
4
intaro.crm/lang/ru/install/step3.php
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
$MESS ['PATH_PROMPT'] = 'Введите путь для установки сайта для системы Intaro CRM';
|
||||||
|
$MESS ['PATH_FIELD'] = 'Путь';
|
||||||
|
?>
|
4
intaro.crm/lang/ru/install/unstep1.php
Normal file
4
intaro.crm/lang/ru/install/unstep1.php
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
$MESS['MOD_UNINST_SITES'] = 'В системе присутствуют сайты, установленные данным модулем.';
|
||||||
|
$MESS['DELETE_SITE'] = 'Удалить сайт';
|
||||||
|
?>
|
20
intaro.crm/lang/ru/options.php
Normal file
20
intaro.crm/lang/ru/options.php
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
$MESS ['ICRM_OPTIONS_GENERAL_TAB'] = 'Общие настройки';
|
||||||
|
$MESS ['ICRM_OPTIONS_IMPORT_TAB'] = 'Настройки импората';
|
||||||
|
$MESS ['ICRM_CONN_SETTINGS'] = 'Настройка соединения';
|
||||||
|
$MESS ['ICRM_API_HOST'] = 'Адрес Intaro CRM:';
|
||||||
|
$MESS ['ICRM_API_KEY'] = 'Ключ авторизации:';
|
||||||
|
|
||||||
|
$MESS ['ICRM_OPTIONS_CATALOG_TAB'] = 'Настройка каталогов';
|
||||||
|
$MESS ['DELIVERY_TYPES_LIST'] = 'Способы доставки';
|
||||||
|
$MESS ['PAYMENT_TYPES_LIST'] = 'Способы оплаты';
|
||||||
|
$MESS ['PAYMENT_STATUS_LIST'] = 'Статусы оплаты';
|
||||||
|
|
||||||
|
$MESS ['ICRM_OPTIONS_SUBMIT_TITLE'] = 'Сохранить настройки';
|
||||||
|
$MESS ['ICRM_OPTIONS_SUBMIT_VALUE'] = 'Сохранить';
|
||||||
|
|
||||||
|
$MESS ['ERR_404'] = 'Возможно не верно введен адрес CRM.';
|
||||||
|
$MESS ['ERR_403'] = 'Не верный apiKey.';
|
||||||
|
$MESS ['ERR_0'] = 'Превышено время ожидания ответа от сервера.';
|
||||||
|
$MESS ['ICRM_OPTIONS_OK'] = 'Изменения успешно сохранены.';
|
||||||
|
?>
|
284
intaro.crm/options.php
Normal file
284
intaro.crm/options.php
Normal file
@ -0,0 +1,284 @@
|
|||||||
|
<?php
|
||||||
|
IncludeModuleLangFile(__FILE__);
|
||||||
|
$mid = 'intaro.crm';
|
||||||
|
$uri = $APPLICATION->GetCurPage() . '?mid=' . htmlspecialchars($mid) . '&lang=' . LANGUAGE_ID;
|
||||||
|
|
||||||
|
CModule::IncludeModule('intaro.crm');
|
||||||
|
CModule::IncludeModule('sale');
|
||||||
|
|
||||||
|
$_GET['errc'] = htmlspecialchars(trim($_GET['errc']));
|
||||||
|
$_GET['ok'] = htmlspecialchars(trim($_GET['ok']));
|
||||||
|
|
||||||
|
if($_GET['errc']) echo CAdminMessage::ShowMessage(GetMessage($_GET['errc']));
|
||||||
|
if($_GET['ok'] && $_GET['ok'] == 'Y') echo CAdminMessage::ShowNote(GetMessage('ICRM_OPTIONS_OK'));
|
||||||
|
|
||||||
|
$arResult = array();
|
||||||
|
|
||||||
|
//update connection settings
|
||||||
|
if (isset($_POST['Update']) && $_POST['Update']=='Y') {
|
||||||
|
$api_host = htmlspecialchars(trim($_POST['api_host']));
|
||||||
|
$api_key = htmlspecialchars(trim($_POST['api_key']));
|
||||||
|
|
||||||
|
if($api_host && $api_key) {
|
||||||
|
$api = new IntaroCrmRestApi($api_host, $api_key);
|
||||||
|
|
||||||
|
$api->paymentStatusesList();
|
||||||
|
|
||||||
|
//check connection & apiKey valid
|
||||||
|
if((int) $api->getStatusCode() != 200) {
|
||||||
|
$uri .= '&errc=ERR_' . $api->getStatusCode();
|
||||||
|
LocalRedirect($uri);
|
||||||
|
} else {
|
||||||
|
COption::SetOptionString($mid, 'api_host', $api_host);
|
||||||
|
COption::SetOptionString($mid, 'api_key', $api_key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//bitrix deliveryTypesList
|
||||||
|
$dbDeliveryTypesList = CSaleDelivery::GetList(
|
||||||
|
array(
|
||||||
|
"SORT" => "ASC",
|
||||||
|
"NAME" => "ASC"
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"ACTIVE" => "Y",
|
||||||
|
),
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
array()
|
||||||
|
);
|
||||||
|
|
||||||
|
//form delivery types ids arr
|
||||||
|
$deliveryTypesArr = array();
|
||||||
|
if ($arDeliveryTypesList = $dbDeliveryTypesList->Fetch()) {
|
||||||
|
do {
|
||||||
|
$deliveryTypesArr[$arDeliveryTypesList['ID']] = $_POST['delivery-type-' . $arDeliveryTypesList['ID']];
|
||||||
|
} while ($arDeliveryTypesList = $dbDeliveryTypesList->Fetch());
|
||||||
|
}
|
||||||
|
|
||||||
|
//bitrix paymentTypesList
|
||||||
|
$dbPaymentTypesList = CSalePaySystem::GetList(
|
||||||
|
array(
|
||||||
|
"SORT" => "ASC",
|
||||||
|
"NAME" => "ASC"
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"ACTIVE" => "Y"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
//form payment types ids arr
|
||||||
|
$paymentTypesArr = array();
|
||||||
|
if ($arPaymentTypesList = $dbPaymentTypesList->Fetch()) {
|
||||||
|
do {
|
||||||
|
$paymentTypesArr[$arPaymentTypesList['ID']] = $_POST['payment-type-' . $arPaymentTypesList['ID']];
|
||||||
|
} while ($arPaymentTypesList = $dbPaymentTypesList->Fetch());
|
||||||
|
}
|
||||||
|
|
||||||
|
//bitrix paymentStatusesList
|
||||||
|
$dbPaymentStatusesList = CSaleStatus::GetList(
|
||||||
|
array(
|
||||||
|
"SORT" => "ASC",
|
||||||
|
"NAME" => "ASC"
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"LID" => "ru", //ru
|
||||||
|
"ACTIVE" => "Y"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
//form payment statuses ids arr
|
||||||
|
$paymentStatusesArr = array();
|
||||||
|
if ($arPaymentStatusesList = $dbPaymentStatusesList->Fetch()) {
|
||||||
|
do {
|
||||||
|
$paymentStatusesArr[$arPaymentStatusesList['ID']] = $_POST['payment-status-' . $arPaymentStatusesList['ID']];
|
||||||
|
} while ($arPaymentStatusesList = $dbPaymentStatusesList->Fetch());
|
||||||
|
}
|
||||||
|
|
||||||
|
COption::SetOptionString($mid, 'deliv_types_arr', serialize($deliveryTypesArr));
|
||||||
|
COption::SetOptionString($mid, 'pay_types_arr', serialize($paymentTypesArr));
|
||||||
|
COption::SetOptionString($mid, 'pay_statuses_arr', serialize($paymentStatusesArr));
|
||||||
|
|
||||||
|
$uri .= '&ok=Y';
|
||||||
|
LocalRedirect($uri);
|
||||||
|
} else {
|
||||||
|
$api_host = COption::GetOptionString($mid, 'api_host', 0);
|
||||||
|
$api_key = COption::GetOptionString($mid, 'api_key', 0);
|
||||||
|
|
||||||
|
$api = new IntaroCrmRestApi($api_host, $api_key);
|
||||||
|
|
||||||
|
//prepare crm lists
|
||||||
|
//$orderTypes = $api->orderTypesList(); -- no such method
|
||||||
|
$arResult['deliveryTypesList'] = $api->deliveryTypesList();
|
||||||
|
$arResult['paymentTypesList'] = $api->paymentTypesList();
|
||||||
|
$arResult['paymentStatusesList'] = $api->paymentStatusesList();
|
||||||
|
|
||||||
|
//bitrix orderTypesList
|
||||||
|
/*
|
||||||
|
* ...some code here...
|
||||||
|
*/
|
||||||
|
|
||||||
|
//bitrix deliveryTypesList
|
||||||
|
$dbDeliveryTypesList = CSaleDelivery::GetList(
|
||||||
|
array(
|
||||||
|
"SORT" => "ASC",
|
||||||
|
"NAME" => "ASC"
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"ACTIVE" => "Y",
|
||||||
|
),
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
array()
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($arDeliveryTypesList = $dbDeliveryTypesList->Fetch()) {
|
||||||
|
do {
|
||||||
|
$arResult['bitrixDeliveryTypesList'][] = $arDeliveryTypesList;
|
||||||
|
} while ($arDeliveryTypesList = $dbDeliveryTypesList->Fetch());
|
||||||
|
}
|
||||||
|
|
||||||
|
//bitrix paymentTypesList
|
||||||
|
$dbPaymentTypesList = CSalePaySystem::GetList(
|
||||||
|
array(
|
||||||
|
"SORT" => "ASC",
|
||||||
|
"NAME" => "ASC"
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"ACTIVE" => "Y"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($arPaymentTypesList = $dbPaymentTypesList->Fetch()) {
|
||||||
|
do {
|
||||||
|
$arResult['bitrixPaymentTypesList'][] = $arPaymentTypesList;
|
||||||
|
} while ($arPaymentTypesList = $dbPaymentTypesList->Fetch());
|
||||||
|
}
|
||||||
|
|
||||||
|
//bitrix paymentStatusesList
|
||||||
|
$dbPaymentStatusesList = CSaleStatus::GetList(
|
||||||
|
array(
|
||||||
|
"SORT" => "ASC",
|
||||||
|
"NAME" => "ASC"
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"LID" => "ru", //ru
|
||||||
|
"ACTIVE" => "Y"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($arPaymentStatusesList = $dbPaymentStatusesList->Fetch()) {
|
||||||
|
do {
|
||||||
|
$arResult['bitrixPaymentStatusesList'][] = $arPaymentStatusesList;
|
||||||
|
} while ($arPaymentStatusesList = $dbPaymentStatusesList->Fetch());
|
||||||
|
}
|
||||||
|
|
||||||
|
//saved cat params
|
||||||
|
$optionsDelivTypes = unserialize(COption::GetOptionString($mid, 'deliv_types_arr', 0));
|
||||||
|
$optionsPayTypes = unserialize(COption::GetOptionString($mid, 'pay_types_arr', 0));
|
||||||
|
$optionsPayStatuses = unserialize(COption::GetOptionString($mid, 'pay_statuses_arr', 0));
|
||||||
|
|
||||||
|
$aTabs = array(
|
||||||
|
array(
|
||||||
|
"DIV" => "edit1",
|
||||||
|
"TAB" => GetMessage('ICRM_OPTIONS_GENERAL_TAB'),
|
||||||
|
"ICON" => "",
|
||||||
|
"TITLE" => GetMessage('ICRM_OPTIONS_GENERAL_CAPTION')
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"DIV" => "edit2",
|
||||||
|
"TAB" => GetMessage('ICRM_OPTIONS_CATALOG_TAB'),
|
||||||
|
"ICON" => '',
|
||||||
|
"TITLE" => GetMessage('ICRM_OPTIONS_IMPORT_CAPTION')
|
||||||
|
),
|
||||||
|
);
|
||||||
|
$tabControl = new CAdminTabControl("tabControl", $aTabs);
|
||||||
|
$tabControl->Begin();
|
||||||
|
?>
|
||||||
|
<form method="POST" action="<?php echo $uri; ?>" id="FORMACTION">
|
||||||
|
<?php
|
||||||
|
echo bitrix_sessid_post();
|
||||||
|
$tabControl->BeginNextTab();
|
||||||
|
?>
|
||||||
|
<input type="hidden" name="tab" value="catalog">
|
||||||
|
<tr class="heading">
|
||||||
|
<td colspan="2"><b><?php echo GetMessage('ICRM_CONN_SETTINGS'); ?></b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-l"><?php echo GetMessage('ICRM_API_HOST'); ?></td>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-r"><input type="text" id="api_host" name="api_host" value="<?php echo $api_host; ?>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-l"><?php echo GetMessage('ICRM_API_KEY'); ?></td>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-r"><input type="text" id="api_key" name="api_key" value="<?php echo $api_key; ?>"></td>
|
||||||
|
</tr>
|
||||||
|
<?php $tabControl->BeginNextTab(); ?>
|
||||||
|
<input type="hidden" name="tab" value="catalog">
|
||||||
|
<tr class="heading">
|
||||||
|
<td colspan="2"><b><?php echo GetMessage('DELIVERY_TYPES_LIST'); ?></b></td>
|
||||||
|
</tr>
|
||||||
|
<?php foreach($arResult['bitrixDeliveryTypesList'] as $bitrixDeliveryType): ?>
|
||||||
|
<tr>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-l" name="<?php echo $bitrixDeliveryType['ID']; ?>">
|
||||||
|
<?php echo $bitrixDeliveryType['NAME']; ?>
|
||||||
|
</td>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-r">
|
||||||
|
<select name="delivery-type-<?php echo $bitrixDeliveryType['ID']; ?>" class="typeselect">
|
||||||
|
<option value=""></option>
|
||||||
|
<?php foreach($arResult['deliveryTypesList'] as $deliveryType): ?>
|
||||||
|
<option value="<?php echo $deliveryType['code']; ?>" <?php if ($optionsDelivTypes[$bitrixDeliveryType['ID']] == $deliveryType['code']) echo 'selected'; ?>>
|
||||||
|
<?php echo $APPLICATION->ConvertCharset($deliveryType['name'], 'utf-8', SITE_CHARSET); ?>
|
||||||
|
</option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
<tr class="heading">
|
||||||
|
<td colspan="2"><b><?php echo GetMessage('PAYMENT_TYPES_LIST'); ?></b></td>
|
||||||
|
</tr>
|
||||||
|
<?php foreach($arResult['bitrixPaymentTypesList'] as $bitrixPaymentType): ?>
|
||||||
|
<tr>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-l" name="<?php echo $bitrixPaymentType['ID']; ?>">
|
||||||
|
<?php echo $bitrixPaymentType['NAME']; ?>
|
||||||
|
</td>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-r">
|
||||||
|
<select name="payment-type-<?php echo $bitrixPaymentType['ID']; ?>" class="typeselect">
|
||||||
|
<option value="" selected=""></option>
|
||||||
|
<?php foreach($arResult['paymentTypesList'] as $paymentType): ?>
|
||||||
|
<option value="<?php echo $paymentType['code']; ?>" <?php if ($optionsPayTypes[$bitrixPaymentType['ID']] == $paymentType['code']) echo 'selected'; ?>>
|
||||||
|
<?php echo $APPLICATION->ConvertCharset($paymentType['name'], 'utf-8', SITE_CHARSET); ?>
|
||||||
|
</option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
<tr class="heading">
|
||||||
|
<td colspan="2"><b><?php echo GetMessage('PAYMENT_STATUS_LIST'); ?></b></td>
|
||||||
|
</tr>
|
||||||
|
<?php foreach($arResult['bitrixPaymentStatusesList'] as $bitrixPaymentStatus): ?>
|
||||||
|
<tr>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-l" name="<?php echo $bitrixPaymentStatus['ID']; ?>">
|
||||||
|
<?php echo $bitrixPaymentStatus['NAME']; ?>
|
||||||
|
</td>
|
||||||
|
<td width="50%" class="adm-detail-content-cell-r">
|
||||||
|
<select name="payment-status-<?php echo $bitrixPaymentStatus['ID']; ?>" class="typeselect">
|
||||||
|
<option value="" selected=""></option>
|
||||||
|
<?php foreach($arResult['paymentStatusesList'] as $paymentStatus): ?>
|
||||||
|
<option value="<?php echo $paymentStatus['code']; ?>" <?php if ($optionsPayStatuses[$bitrixPaymentStatus['ID']] == $paymentStatus['code']) echo 'selected'; ?>>
|
||||||
|
<?php echo $APPLICATION->ConvertCharset($paymentStatus['name'], 'utf-8', SITE_CHARSET); ?>
|
||||||
|
</option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
<?php $tabControl->BeginNextTab(); ?>
|
||||||
|
<?php $tabControl->Buttons(); ?>
|
||||||
|
<input type="hidden" name="Update" value="Y" />
|
||||||
|
<input type="submit" title="<?php echo GetMessage('ICRM_OPTIONS_SUBMIT_TITLE'); ?>" value="<?php echo GetMessage('ICRM_OPTIONS_SUBMIT_VALUE'); ?>" name="btn-update" class="adm-btn-save" />
|
||||||
|
<?php $tabControl->End(); ?>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<?php } ?>
|
Loading…
Reference in New Issue
Block a user