changed working prot
This commit is contained in:
parent
0d8d174980
commit
0a84b8f2ba
@ -1,393 +0,0 @@
|
||||
<?php
|
||||
|
||||
global $MESS;
|
||||
IncludeModuleLangFile(__FILE__);
|
||||
|
||||
class ICMLLoader {
|
||||
|
||||
public $iblocks;
|
||||
public $filename;
|
||||
public $propertiesSKU;
|
||||
public $propertiesProduct;
|
||||
public $application;
|
||||
public $encoding = 'utf-8';
|
||||
|
||||
protected $fp;
|
||||
protected $mainSection = 1000000;
|
||||
|
||||
public function Load()
|
||||
{
|
||||
global $USER;
|
||||
if(!isset($USER))
|
||||
$USER = new CUser;
|
||||
|
||||
if (count($this->iblocks) < count($this->articleProperties))
|
||||
return false;
|
||||
|
||||
$this->PrepareSettings();
|
||||
|
||||
$this->PrepareFile();
|
||||
|
||||
$this->PreWriteCatalog();
|
||||
|
||||
$categories = $this->GetCategories();
|
||||
|
||||
$this->WriteCategories($categories);
|
||||
|
||||
$this->PreWriteOffers();
|
||||
$this->BuildOffers($categories);
|
||||
$this->PostWriteOffers();
|
||||
|
||||
$this->PostWriteCatalog();
|
||||
|
||||
$this->CloseFile();
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
protected function PrepareSettings()
|
||||
{
|
||||
foreach ($this->propertiesSKU as $iblock => $arr) {
|
||||
foreach ($arr as $id => $sku) {
|
||||
$this->propertiesSKU[$iblock][$id] = strtoupper($sku);
|
||||
}
|
||||
}
|
||||
foreach ($this->propertiesProduct as $iblock => $arr) {
|
||||
foreach ($arr as $id => $prod) {
|
||||
$this->propertiesProduct[$iblock][$id] = strtoupper($prod);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function PrepareValue($text)
|
||||
{
|
||||
$newText = $this->application->ConvertCharset($text, LANG_CHARSET, $this->encoding);
|
||||
$newText = strip_tags($newText);
|
||||
$newText = str_replace("&", "&", $newText);
|
||||
return $newText;
|
||||
}
|
||||
|
||||
protected function PrepareFile()
|
||||
{
|
||||
$fullFilename = $_SERVER["DOCUMENT_ROOT"] . $this->filename;
|
||||
CheckDirPath($fullFilename);
|
||||
|
||||
if (!$this->fp = @fopen($fullFilename, "w"))
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function PreWriteCatalog()
|
||||
{
|
||||
@fwrite($this->fp, "<yml_catalog date=\"" . $this->PrepareValue(Date("Y-m-d H:i:s")) . "\">\n
|
||||
<shop>\n
|
||||
<name>" . $this->PrepareValue(COption::GetOptionString("main", "site_name", ""))."</name>\n
|
||||
<company>" . $this->PrepareValue(COption::GetOptionString("main", "site_name", ""))."</company>\n"
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
protected function WriteCategories($categories)
|
||||
{
|
||||
$stringCategories = "";
|
||||
@fwrite($this->fp, "<categories>\n");
|
||||
foreach ($categories as $category) {
|
||||
$stringCategories .= $this->BuildCategory($category);
|
||||
}
|
||||
@fwrite($this->fp, $stringCategories);
|
||||
@fwrite($this->fp, "</categories>\n");
|
||||
}
|
||||
protected function PreWriteOffers()
|
||||
{
|
||||
@fwrite($this->fp, "<offers>\n");
|
||||
}
|
||||
|
||||
protected function PostWriteOffers()
|
||||
{
|
||||
@fwrite($this->fp, "</offers>\n");
|
||||
}
|
||||
|
||||
protected function WriteOffers($offers)
|
||||
{
|
||||
@fwrite($this->fp, $offers);
|
||||
}
|
||||
|
||||
protected function PostWriteCatalog()
|
||||
{
|
||||
@fwrite($this->fp, "</shop>\n
|
||||
</yml_catalog>\n");
|
||||
}
|
||||
|
||||
protected function CloseFile()
|
||||
{
|
||||
@fclose($this->fp);
|
||||
}
|
||||
|
||||
|
||||
protected function GetCategories()
|
||||
{
|
||||
$categories = array();
|
||||
foreach ($this->iblocks as $id)
|
||||
{
|
||||
$filter = Array(
|
||||
"IBLOCK_ID" => $id,
|
||||
"ACTIVE" => "Y",
|
||||
"IBLOCK_ACTIVE" => "Y",
|
||||
"GLOBAL_ACTIVE" => "Y"
|
||||
);
|
||||
|
||||
$dbRes = CIBlockSection::GetList(array("left_margin" => "asc"), $filter);
|
||||
$hasCategories = false;
|
||||
while ($arRes = $dbRes->Fetch())
|
||||
{
|
||||
$categories[$arRes['ID']] = $arRes;
|
||||
$hasCategories = true;
|
||||
}
|
||||
if (!$hasCategories)
|
||||
{
|
||||
$iblock = CIBlock::GetByID($id)->Fetch();
|
||||
|
||||
$arRes = Array();
|
||||
$arRes['ID'] = $this->mainSection + $id;
|
||||
$arRes['IBLOCK_SECTION_ID'] = 0;
|
||||
$arRes['NAME'] = sprintf(GetMessage('ROOT_CATEGORY_FOR_CATALOG'), $iblock['NAME']);
|
||||
$categories[$arRes['ID']] = $arRes;
|
||||
}
|
||||
}
|
||||
return $categories;
|
||||
|
||||
}
|
||||
|
||||
protected function BuildCategory($arCategory)
|
||||
{
|
||||
return "
|
||||
<category id=\"" . $this->PrepareValue($arCategory["ID"]) . "\""
|
||||
. ( intval($arCategory["IBLOCK_SECTION_ID"] ) > 0 ?
|
||||
" parentId=\"" . $this->PrepareValue($arCategory["IBLOCK_SECTION_ID"]) . "\""
|
||||
:"")
|
||||
. ">"
|
||||
. $this->PrepareValue($arCategory["NAME"])
|
||||
. "</category>\n";
|
||||
|
||||
}
|
||||
|
||||
protected function BuildOffers(&$allCategories)
|
||||
{
|
||||
foreach ($this->iblocks as $key => $id)
|
||||
{
|
||||
$iblock['IBLOCK_DB'] = CIBlock::GetByID($id)->Fetch();
|
||||
$iblockOffer = CCatalogSKU::GetInfoByProductIBlock($id);
|
||||
|
||||
$arSelect = Array (
|
||||
"ID",
|
||||
"LID",
|
||||
"IBLOCK_ID",
|
||||
"IBLOCK_SECTION_ID",
|
||||
"ACTIVE",
|
||||
"ACTIVE_FROM",
|
||||
"ACTIVE_TO",
|
||||
"NAME",
|
||||
"DETAIL_PICTURE",
|
||||
"DETAIL_TEXT",
|
||||
"DETAIL_PICTURE",
|
||||
"LANG_DIR",
|
||||
"DETAIL_PAGE_URL"
|
||||
);
|
||||
|
||||
foreach ($this->propertiesProduct[$id] as $key => $propProduct) {
|
||||
if ($this->propertiesProduct[$id][$key] != "")
|
||||
$arSelect[] = "PROPERTY_" . $propProduct;
|
||||
}
|
||||
|
||||
|
||||
$filter = Array (
|
||||
"IBLOCK_ID" => $id,
|
||||
"ACTIVE_DATE" => "Y",
|
||||
"ACTIVE" => "Y",
|
||||
"INCLUDE_SUBSECTIONS" => "Y"
|
||||
);
|
||||
$count = 0;
|
||||
$dbResProducts = CIBlockElement::GetList(array(), $filter, false, false, $arSelect);
|
||||
$stringOffers = "";
|
||||
while ($product = $dbResProducts->GetNextElement()) {
|
||||
|
||||
$product = $product->GetFields();
|
||||
|
||||
// Get properties of product
|
||||
$resPropertiesProduct = Array();
|
||||
foreach ($this->propertiesProduct[$id] as $key => $propProduct) {
|
||||
$resPropertiesProduct[$key] = "";
|
||||
if ($propProduct != "") {
|
||||
$propDesc = CIBlockProperty::GetByID($propProduct, $id)->GetNext();
|
||||
|
||||
if ($propDesc['PROPERTY_TYPE'] == 'E') {
|
||||
$el = CIBlockElement::GetById($product["PROPERTY_" . $propProduct . "_VALUE"])->Fetch();
|
||||
$resPropertiesProduct[$key] = $el['NAME'];
|
||||
} else {
|
||||
$resPropertiesProduct[$key] = $product["PROPERTY_" . $propProduct . "_VALUE"];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get categories of product
|
||||
$categories = Array();
|
||||
$dbResCategories = CIBlockElement::GetElementGroups($product['ID'], true);
|
||||
while ($arResCategory = $dbResCategories->Fetch()) {
|
||||
$categories[$arResCategory["ID"]] = array(
|
||||
'ID' => $arResCategory["ID"],
|
||||
'NAME' => $arResCategory["NAME"],
|
||||
);
|
||||
}
|
||||
if (count($categories) == 0) {
|
||||
|
||||
$catId = $this->mainSection + $id;
|
||||
$categories[$catId] = $allCategories[$catId];
|
||||
}
|
||||
|
||||
|
||||
$existOffer = false;
|
||||
if (!empty($iblockOffer['IBLOCK_ID'])) {
|
||||
|
||||
$arFilterOffer = Array (
|
||||
'IBLOCK_ID' => $iblockOffer['IBLOCK_ID'],
|
||||
'PROPERTY_' . $iblockOffer['SKU_PROPERTY_ID'] => $product["ID"]
|
||||
);
|
||||
$arSelectOffer = Array (
|
||||
'ID',
|
||||
"NAME",
|
||||
"DETAIL_TEXT",
|
||||
"DETAIL_PAGE_URL",
|
||||
"DETAIL_PICTURE"
|
||||
);
|
||||
|
||||
foreach ($this->propertiesSKU[$id] as $key => $propSKU) {
|
||||
if ($this->propertiesSKU[$id][$key] != "")
|
||||
$arSelectOffer[] = "PROPERTY_" . $propSKU;
|
||||
}
|
||||
|
||||
$rsOffers = CIBlockElement::GetList(array(), $arFilterOffer, false, false, $arSelectOffer);
|
||||
while ($arOffer = $rsOffers->GetNext()) {
|
||||
|
||||
$offer = CCatalogProduct::GetByID($arOffer['ID']);
|
||||
$arOffer['QUANTITY'] = $offer["QUANTITY"];
|
||||
|
||||
$arOffer['PRODUCT_ID'] = $product["ID"];
|
||||
$arOffer['DETAIL_PAGE_URL'] = $product["DETAIL_PAGE_URL"];
|
||||
$arOffer['DETAIL_PICTURE'] = $product["DETAIL_PICTURE"];
|
||||
$arOffer['PREVIEW_PICTURE'] = $product["PREVIEW_PICTURE"];
|
||||
$arOffer['PRODUCT_NAME'] = $product["NAME"];
|
||||
|
||||
// Get properties of offer
|
||||
|
||||
foreach ($this->propertiesSKU[$id] as $key => $propSKU) {
|
||||
if ($propSKU != "") {
|
||||
$propDesc = CIBlockProperty::GetByID($propSKU,$arOffer['ID'])->GetNext();
|
||||
|
||||
if ($propDesc['PROPERTY_TYPE'] == 'E') {
|
||||
$el = CIBlockElement::GetById($product["PROPERTY_" . $propSKU . "_VALUE"])->Fetch();
|
||||
$arOffer[$key] = $el['NAME'];
|
||||
} else {
|
||||
$arOffer[$key] = $arOffer["PROPERTY_" . $propSKU . "_VALUE"];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($resPropertiesProduct as $key => $propProduct) {
|
||||
if ($this->propertiesProduct[$id][$key] != "")
|
||||
$arOffer[$key] = $propProduct;
|
||||
}
|
||||
|
||||
$dbPrice = GetCatalogProductPrice($arOffer["ID"],1);
|
||||
$arOffer['PRICE'] = $dbPrice['PRICE'];
|
||||
|
||||
$stringOffers .= $this->BuildOffer($arOffer, $categories, $iblock);
|
||||
$existOffer = true;
|
||||
}
|
||||
}
|
||||
if (!$existOffer) {
|
||||
|
||||
$offer = CCatalogProduct::GetByID($product['ID']);
|
||||
$product['QUANTITY'] = $offer["QUANTITY"];
|
||||
|
||||
$product['PRODUCT_ID'] = $product["ID"];
|
||||
$product['PRODUCT_NAME'] = $product["NAME"];
|
||||
|
||||
foreach ($resPropertiesProduct as $key => $propProduct) {
|
||||
if ($this->propertiesProduct[$id][$key] != "")
|
||||
$product[$key] = $propProduct;
|
||||
}
|
||||
|
||||
$dbPrice = GetCatalogProductPrice($product["ID"],1);
|
||||
$product['PRICE'] = $dbPrice['PRICE'];
|
||||
|
||||
$stringOffers .= $this->BuildOffer($product, $categories, $iblock);
|
||||
}
|
||||
|
||||
$count++;
|
||||
if ($count == 1000) {
|
||||
$this->WriteOffers($stringOffers);
|
||||
$stringOffers = "";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ($stringOffers != "") {
|
||||
$this->WriteOffers($stringOffers);
|
||||
$stringOffers = "";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected function BuildOffer($arOffer, $categories, $iblock)
|
||||
{
|
||||
$offer = "";
|
||||
$offer .= "<offer id=\"" .$this->PrepareValue($arOffer["ID"]) . "\" ".
|
||||
"productId=\"" . $this->PrepareValue($arOffer["PRODUCT_ID"]) . "\" ".
|
||||
"quantity=\"" . $this->PrepareValue(DoubleVal($arOffer['QUANTITY'])) . "\">\n";
|
||||
|
||||
$offer .= "<url>http://" . $this->PrepareValue($iblock['IBLOCK_DB']['SERVER_NAME']) . $this->PrepareValue($arOffer['DETAIL_PAGE_URL']) . "</url>\n";
|
||||
|
||||
$offer .= "<price>" . $this->PrepareValue($arOffer['PRICE']) . "</price>\n";
|
||||
foreach ($categories as $category)
|
||||
$offer .= "<categoryId>" . $category['ID'] . "</categoryId>\n";
|
||||
|
||||
$detailPicture = intval($arOffer["DETAIL_PICTURE"]);
|
||||
$previewPicture = intval($arOffer["PREVIEW_PICTURE"]);
|
||||
|
||||
if ($detailPicture > 0 || $previewPicture > 0)
|
||||
{
|
||||
$picture = $detailPicture;
|
||||
if ($picture <= 0) {
|
||||
$picture = $previewPicture;
|
||||
}
|
||||
|
||||
if ($arFile = CFile::GetFileArray($picture))
|
||||
{
|
||||
if(substr($arFile["SRC"], 0, 1) == "/")
|
||||
$strFile = "http://" . $this->PrepareValue($iblock['IBLOCK_DB']['SERVER_NAME']) . implode("/", array_map("rawurlencode", explode("/", $arFile["SRC"])));
|
||||
elseif(preg_match("/^(http|https):\\/\\/(.*?)\\/(.*)\$/", $arFile["SRC"], $match))
|
||||
$strFile = "http://" . $this->PrepareValue($match[2]) . '/' . implode("/", array_map("rawurlencode", explode("/", $this->PrepareValue($match[3]))));
|
||||
else
|
||||
$strFile = $arFile["SRC"];
|
||||
$offer .= "<picture>" . $this->PrepareValue($strFile) . "</picture>\n";
|
||||
}
|
||||
}
|
||||
|
||||
$offer .= "<name>" . $this->PrepareValue($arOffer["NAME"]) . "</name>\n";
|
||||
|
||||
$offer .= "<xmlId>" . $this->PrepareValue($arOffer["EXTERNAL_ID"]) . "</xmlId>\n";
|
||||
$offer .= "<productName>" . $this->PrepareValue($arOffer["PRODUCT_NAME"]) . "</productName>\n";
|
||||
|
||||
foreach ($this->propertiesProduct[$iblock['IBLOCK_DB']['ID']] as $key => $propProduct) {
|
||||
if ($propProduct != "" && $arOffer[$key] != null)
|
||||
$offer .= "<" . $key . ">" . $this->PrepareValue($arOffer[$key]) . "</" . $key . ">\n";
|
||||
}
|
||||
|
||||
$offer.= "</offer>\n";
|
||||
return $offer;
|
||||
}
|
||||
|
||||
}
|
@ -1,932 +0,0 @@
|
||||
<?php
|
||||
|
||||
class ICrmOrderActions
|
||||
{
|
||||
protected static $MODULE_ID = 'intaro.intarocrm';
|
||||
protected static $CRM_API_HOST_OPTION = 'api_host';
|
||||
protected static $CRM_API_KEY_OPTION = 'api_key';
|
||||
protected static $CRM_ORDER_TYPES_ARR = 'order_types_arr';
|
||||
protected static $CRM_DELIVERY_TYPES_ARR = 'deliv_types_arr';
|
||||
protected static $CRM_PAYMENT_TYPES = 'pay_types_arr';
|
||||
protected static $CRM_PAYMENT_STATUSES = 'pay_statuses_arr';
|
||||
protected static $CRM_PAYMENT = 'payment_arr'; //order payment Y/N
|
||||
protected static $CRM_ORDER_LAST_ID = 'order_last_id';
|
||||
protected static $CRM_ORDER_SITES = 'sites_ids';
|
||||
protected static $CRM_ORDER_PROPS = 'order_props';
|
||||
protected static $CRM_ORDER_FAILED_IDS = 'order_failed_ids';
|
||||
|
||||
/**
|
||||
* Mass order uploading, without repeating; always returns true, but writes error log
|
||||
* @param $failed -- flag to export failed orders
|
||||
* @return boolean
|
||||
*/
|
||||
public static function uploadOrders($pSize = 50, $failed = false) {
|
||||
|
||||
//COption::SetOptionString(self::$MODULE_ID, self::$CRM_ORDER_LAST_ID, 0); // -- for test
|
||||
|
||||
if (!CModule::IncludeModule("iblock")) {
|
||||
//handle err
|
||||
self::eventLog('ICrmOrderActions::uploadOrders', 'iblock', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!CModule::IncludeModule("sale")) {
|
||||
//handle err
|
||||
self::eventLog('ICrmOrderActions::uploadOrders', 'sale', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!CModule::IncludeModule("catalog")) {
|
||||
//handle err
|
||||
self::eventLog('ICrmOrderActions::uploadOrders', 'catalog', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
$resOrders = array();
|
||||
$resCustomers = array();
|
||||
|
||||
$lastUpOrderId = COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_LAST_ID, 0);
|
||||
$lastOrderId = 0;
|
||||
|
||||
$failedIds = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_FAILED_IDS, 0));
|
||||
if (!$failedIds)
|
||||
$failedIds = array();
|
||||
|
||||
$dbOrder = CSaleOrder::GetList(array("ID" => "ASC"), array('>ID' => $lastUpOrderId));
|
||||
$dbFailedOrder = CSaleOrder::GetList(array("ID" => "ASC"), array('ID' => $failedIds));
|
||||
|
||||
$api_host = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_HOST_OPTION, 0);
|
||||
$api_key = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_KEY_OPTION, 0);
|
||||
|
||||
//saved cat params
|
||||
$optionsOrderTypes = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_TYPES_ARR, 0));
|
||||
$optionsDelivTypes = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_DELIVERY_TYPES_ARR, 0));
|
||||
$optionsPayTypes = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT_TYPES, 0));
|
||||
$optionsPayStatuses = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT_STATUSES, 0)); // --statuses
|
||||
$optionsPayment = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT, 0));
|
||||
$optionsSites = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_SITES, 0));
|
||||
$optionsOrderProps = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_PROPS, 0));
|
||||
|
||||
$api = new IntaroCrm\RestApi($api_host, $api_key);
|
||||
|
||||
$arParams = array(
|
||||
'optionsOrderTypes' => $optionsOrderTypes,
|
||||
'optionsDelivTypes' => $optionsDelivTypes,
|
||||
'optionsPayTypes' => $optionsPayTypes,
|
||||
'optionsPayStatuses' => $optionsPayStatuses,
|
||||
'optionsPayment' => $optionsPayment,
|
||||
'optionSites' => $optionsSites,
|
||||
'optionsOrderProps' => $optionsOrderProps
|
||||
);
|
||||
|
||||
if (!$failed) {
|
||||
|
||||
//packmode
|
||||
|
||||
$orderCount = 0;
|
||||
|
||||
while ($arOrder = $dbOrder->GetNext()) { // here orders by id asc
|
||||
if (is_array($optionsSites))
|
||||
if (!empty($optionsSites))
|
||||
if (!in_array($arOrder['LID'], $optionsSites))
|
||||
continue;
|
||||
|
||||
$result = self::orderCreate($arOrder, $api, $arParams);
|
||||
|
||||
if (!$result['order'] || !$result['customer'])
|
||||
continue;
|
||||
|
||||
$orderCount++;
|
||||
|
||||
$resOrders[] = $result['order'];
|
||||
$resCustomers[] = $result['customer'];
|
||||
|
||||
$lastOrderId = $arOrder['ID'];
|
||||
|
||||
if ($orderCount >= $pSize) {
|
||||
$customers = $api->customerUpload($resCustomers);
|
||||
|
||||
// error pushing customers
|
||||
if ($api->getStatusCode() != 201) {
|
||||
//handle err
|
||||
//self::eventLog('ICrmOrderActions::uploadOrders', 'IntaroCrm\RestApi::customerUpload', $api->getLastError());
|
||||
|
||||
if ($api->getStatusCode() != 460) // some orders were sent
|
||||
return false; // in pack mode return errors
|
||||
}
|
||||
|
||||
$orders = $api->orderUpload($resOrders);
|
||||
|
||||
// error pushing orders
|
||||
if ($api->getStatusCode() != 201) {
|
||||
//handle err
|
||||
self::eventLog('ICrmOrderActions::uploadOrders', 'IntaroCrm\RestApi::orderUpload', $api->getLastError());
|
||||
|
||||
if ($api->getStatusCode() != 460) // some orders were sent
|
||||
return false; // in pack mode return errors
|
||||
}
|
||||
|
||||
if ($lastOrderId)
|
||||
COption::SetOptionString(self::$MODULE_ID, self::$CRM_ORDER_LAST_ID, $lastOrderId);
|
||||
|
||||
return true; // end of pack
|
||||
}
|
||||
}
|
||||
if (!empty($resOrders)) {
|
||||
$customers = $api->customerUpload($resCustomers);
|
||||
|
||||
// error pushing customers
|
||||
if ($api->getStatusCode() != 201) {
|
||||
//handle err
|
||||
//self::eventLog('ICrmOrderActions::uploadOrders', 'IntaroCrm\RestApi::customerUpload', $api->getLastError());
|
||||
|
||||
if ($api->getStatusCode() != 460) // some orders were sent
|
||||
return false; // in pack mode return errors
|
||||
}
|
||||
|
||||
$orders = $api->orderUpload($resOrders);
|
||||
|
||||
// error pushing orders
|
||||
if ($api->getStatusCode() != 201) {
|
||||
//handle err
|
||||
self::eventLog('ICrmOrderActions::uploadOrders', 'IntaroCrm\RestApi::orderUpload', $api->getLastError());
|
||||
|
||||
if ($api->getStatusCode() != 460) // some orders were sent
|
||||
return false; // in pack mode return errors
|
||||
}
|
||||
}
|
||||
|
||||
if ($lastOrderId)
|
||||
COption::SetOptionString(self::$MODULE_ID, self::$CRM_ORDER_LAST_ID, $lastOrderId);
|
||||
|
||||
} else {
|
||||
|
||||
// failed orders upload
|
||||
$orderCount = 0;
|
||||
$recOrders = array();
|
||||
|
||||
while ($arOrder = $dbFailedOrder->GetNext()) { // here orders by id asc
|
||||
if (is_array($optionsSites))
|
||||
if (!empty($optionsSites))
|
||||
if (!in_array($arOrder['LID'], $optionsSites))
|
||||
continue;
|
||||
|
||||
$result = self::orderCreate($arOrder, $api, $arParams);
|
||||
|
||||
if (!$result['order'] || !$result['customer'])
|
||||
continue;
|
||||
|
||||
$orderCount++;
|
||||
|
||||
$resOrders[] = $result['order'];
|
||||
$resCustomers[] = $result['customer'];
|
||||
|
||||
$recOrders[] = $arOrder['ID'];
|
||||
|
||||
if ($orderCount >= $pSize) {
|
||||
$customers = $api->customerUpload($resCustomers);
|
||||
|
||||
// error pushing customers
|
||||
if ($api->getStatusCode() != 201) {
|
||||
//handle err
|
||||
//self::eventLog('ICrmOrderActions::uploadOrders', 'IntaroCrm\RestApi::customerUpload', $api->getLastError());
|
||||
|
||||
if ($api->getStatusCode() != 460) // some orders were sent
|
||||
return false; // in pack mode return errors
|
||||
}
|
||||
|
||||
$orders = $api->orderUpload($resOrders);
|
||||
|
||||
// error pushing orders
|
||||
if ($api->getStatusCode() != 201) {
|
||||
//handle err
|
||||
self::eventLog('ICrmOrderActions::uploadOrders', 'IntaroCrm\RestApi::orderUpload', $api->getLastError());
|
||||
|
||||
if ($api->getStatusCode() != 460) // some orders were sent
|
||||
return false; // in pack mode return errors
|
||||
}
|
||||
|
||||
if (!empty($recOrders)) {
|
||||
$failedIds = array_merge(array_diff($failedIds, $recOrders)); // clear success ids
|
||||
COption::SetOptionString(self::$MODULE_ID, self::$CRM_ORDER_FAILED_IDS, serialize($failedIds));
|
||||
}
|
||||
|
||||
return true; // end of pack
|
||||
}
|
||||
}
|
||||
if (!empty($resOrders)) {
|
||||
$customers = $api->customerUpload($resCustomers);
|
||||
|
||||
// error pushing customers
|
||||
if ($api->getStatusCode() != 201) {
|
||||
//handle err
|
||||
//self::eventLog('ICrmOrderActions::uploadOrders', 'IntaroCrm\RestApi::customerUpload', $api->getLastError());
|
||||
|
||||
if ($api->getStatusCode() != 460) // some orders were sent
|
||||
return false; // in pack mode return errors
|
||||
}
|
||||
|
||||
$orders = $api->orderUpload($resOrders);
|
||||
|
||||
// error pushing orders
|
||||
if ($api->getStatusCode() != 201) {
|
||||
//handle err
|
||||
self::eventLog('ICrmOrderActions::uploadOrders', 'IntaroCrm\RestApi::orderUpload', $api->getLastError());
|
||||
|
||||
if ($api->getStatusCode() != 460) // some orders were sent
|
||||
return false; // in pack mode return errors
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($recOrders)) {
|
||||
$failedIds = array_merge(array_diff($failedIds, $recOrders)); // clear success ids
|
||||
COption::SetOptionString(self::$MODULE_ID, self::$CRM_ORDER_FAILED_IDS, serialize($failedIds));
|
||||
}
|
||||
}
|
||||
|
||||
return true; //all ok!
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* History update
|
||||
* @global CUser $USER
|
||||
* @return boolean
|
||||
*/
|
||||
public static function orderHistory() {
|
||||
global $USER;
|
||||
|
||||
if(!isset($USER) || !$USER) { // for agent; to add order User
|
||||
$USER = new CUser;
|
||||
$USER->Update(1, array());
|
||||
}
|
||||
|
||||
if (!CModule::IncludeModule("iblock")) {
|
||||
//handle err
|
||||
self::eventLog('ICrmOrderActions::orderHistory', 'iblock', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!CModule::IncludeModule("sale")) {
|
||||
//handle err
|
||||
self::eventLog('ICrmOrderActions::orderHistory', 'sale', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!CModule::IncludeModule("catalog")) {
|
||||
//handle err
|
||||
self::eventLog('ICrmOrderActions::orderHistory', 'catalog', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
$api_host = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_HOST_OPTION, 0);
|
||||
$api_key = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_KEY_OPTION, 0);
|
||||
|
||||
//saved cat params (crm -> bitrix)
|
||||
$optionsOrderTypes = array_flip(unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_TYPES_ARR, 0)));
|
||||
$optionsDelivTypes = array_flip(unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_DELIVERY_TYPES_ARR, 0)));
|
||||
$optionsPayTypes = array_flip(unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT_TYPES, 0)));
|
||||
$optionsPayStatuses = array_flip(unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT_STATUSES, 0))); // --statuses
|
||||
$optionsPayment = array_flip(unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT, 0)));
|
||||
$optionsSites = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_SITES, 0));
|
||||
$optionsOrderProps = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_PROPS, 0));
|
||||
|
||||
$api = new IntaroCrm\RestApi($api_host, $api_key);
|
||||
|
||||
$orderHistory = $api->orderHistory();
|
||||
|
||||
// pushing existing orders
|
||||
foreach ($orderHistory as $order) {
|
||||
|
||||
if(!isset($order['externalId']) && !$order['externalId']) {
|
||||
|
||||
continue;
|
||||
|
||||
// new order
|
||||
/*array(
|
||||
'LID' => SITE_ID, //<----!
|
||||
'PERSON_TYPE_ID' => 1, // <------!
|
||||
'PAYED' => 'N',
|
||||
'CANCELED' => 'N',
|
||||
'STATUS_ID' => 'N',
|
||||
'PRICE' => 0,
|
||||
'CURRENCY' => 'RUB',
|
||||
'USER_ID' => IntVal($USER->GetID()), // <--------!
|
||||
'PAY_SYSTEM_ID' => 0,
|
||||
'PRICE_DELIVERY' => 0,
|
||||
'DELIVERY_ID' => 0,
|
||||
'DISCOUNT_VALUE' => 0,
|
||||
'USER_DESCRIPTION' => ''
|
||||
);
|
||||
|
||||
$order['externalId'] = CSaleOrder::Add(array());
|
||||
|
||||
$api->orderFixExternalIds(array($order['id'], $order['externalId']));
|
||||
|
||||
if ($api->getStatusCode() != 200) {
|
||||
//handle err - write log & continue
|
||||
self::eventLog('ICrmOrderActions::orderHistory', 'IntaroCrm\RestApi::orderFixExternalIds', $api->getLastError());
|
||||
continue;
|
||||
}
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
if(isset($order['externalId']) && $order['externalId']) {
|
||||
$arFields = CSaleOrder::GetById($order['externalId']);
|
||||
|
||||
// incorrect order
|
||||
if(!$arFields || empty($arFields))
|
||||
continue;
|
||||
|
||||
$userId = $arFields['USER_ID'];
|
||||
if(isset($order['customer']) && $order['customer']) $userId = $order['customer'];
|
||||
$LID = $arFields['LID'];
|
||||
|
||||
|
||||
$rsOrderProps = CSaleOrderPropsValue::GetList(array(), array('ORDER_ID' => $arFields['ID']));
|
||||
|
||||
while ($ar = $rsOrderProps->Fetch()) {
|
||||
if (isset($order['deliveryAddress']) && $order['deliveryAddress']) {
|
||||
switch ($ar['CODE']) {
|
||||
case 'CITY': if (isset($order['deliveryAddress']['city']))
|
||||
CSaleOrderPropsValue::Update($ar['ID'], array('VALUE' => self::fromJSON($order['deliveryAddress']['city'])));
|
||||
break;
|
||||
case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['text']: if (isset($order['deliveryAddress']['text']))
|
||||
CSaleOrderPropsValue::Update($ar['ID'], array('VALUE' => self::fromJSON($order['deliveryAddress']['text'])));
|
||||
break;
|
||||
case 'LOCATION': if (isset($order['deliveryAddress']['city'])) {
|
||||
$cityId = self::getLocationCityId($order['deliveryAddress']['city']);
|
||||
if (!$cityId)
|
||||
break;
|
||||
CSaleOrderPropsValue::Update($ar['ID'], array('VALUE' => $cityId));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (count($optionsOrderProps[$arFields['PERSON_TYPE_ID']] > 4)) {
|
||||
switch ($ar['CODE']) {
|
||||
/* case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['country']: $resOrderDeliveryAddress['country'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['region']: $resOrderDeliveryAddress['region'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['city']: $resOrderDeliveryAddress['city'] = self::toJSON($ar['VALUE']);
|
||||
break; */
|
||||
case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['street']: if (isset($order['deliveryAddress']['street']))
|
||||
CSaleOrderPropsValue::Update($ar['ID'], array('VALUE' => self::fromJSON($order['deliveryAddress']['street'])));
|
||||
break;
|
||||
case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['building']: if (isset($order['deliveryAddress']['building']))
|
||||
CSaleOrderPropsValue::Update($ar['ID'], array('VALUE' => self::fromJSON($order['deliveryAddress']['building'])));
|
||||
break;
|
||||
case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['flat']: if (isset($order['deliveryAddress']['flat']))
|
||||
CSaleOrderPropsValue::Update($ar['ID'], array('VALUE' => self::fromJSON($order['deliveryAddress']['flat'])));
|
||||
break;
|
||||
case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['intercomcode']: if (isset($order['deliveryAddress']['intercomcode']))
|
||||
CSaleOrderPropsValue::Update($ar['ID'], array('VALUE' => self::fromJSON($order['deliveryAddress']['intercomcode'])));
|
||||
break;
|
||||
case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['floor']: if (isset($order['deliveryAddress']['floor']))
|
||||
CSaleOrderPropsValue::Update($ar['ID'], array('VALUE' => self::fromJSON($order['deliveryAddress']['floor'])));
|
||||
break;
|
||||
case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['block']: if (isset($order['deliveryAddress']['block']))
|
||||
CSaleOrderPropsValue::Update($ar['ID'], array('VALUE' => self::fromJSON($order['deliveryAddress']['block'])));
|
||||
break;
|
||||
case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['house']: if (isset($order['deliveryAddress']['house']))
|
||||
CSaleOrderPropsValue::Update($ar['ID'], array('VALUE' => self::fromJSON($order['deliveryAddress']['house'])));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch ($ar['CODE']) {
|
||||
case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['fio']:
|
||||
if (isset($order['firstName']))
|
||||
$contactName['firstName'] = self::fromJSON($order['firstName']);
|
||||
if (isset($order['lastName']))
|
||||
$contactName['lastName'] = self::fromJSON($order['lastName']);
|
||||
if (isset($order['patronymic']))
|
||||
$contactName['patronymic'] = self::fromJSON($order['patronymic']);
|
||||
|
||||
if (!isset($contactName) || empty($contactName))
|
||||
break;
|
||||
|
||||
CSaleOrderPropsValue::Update($ar['ID'], array('VALUE' => implode(" ", $contactName)));
|
||||
break;
|
||||
case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['phone']: if (isset($order['phone']))
|
||||
CSaleOrderPropsValue::Update($ar['ID'], array('VALUE' => self::fromJSON($order['phone'])));
|
||||
break;
|
||||
case $optionsOrderProps[$arFields['PERSON_TYPE_ID']]['email']: if (isset($order['email']))
|
||||
CSaleOrderPropsValue::Update($ar['ID'], array('VALUE' => self::fromJSON($order['email'])));
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// here check if smth wasnt added or new propetties
|
||||
if (isset($order['deliveryAddress']) && $order['deliveryAddress']) {
|
||||
if (isset($order['deliveryAddress']['city']))
|
||||
self::addOrderProperty($optionsOrderProps[$arFields['PERSON_TYPE_ID']]['city'], self::fromJSON($order['deliveryAddress']['city']), $order['externalId']);
|
||||
|
||||
if (isset($order['deliveryAddress']['text']))
|
||||
self::addOrderProperty($optionsOrderProps[$arFields['PERSON_TYPE_ID']]['text'], self::fromJSON($order['deliveryAddress']['text']), $order['externalId']);
|
||||
|
||||
if (count($optionsOrderProps[$arFields['PERSON_TYPE_ID']] > 4)) {
|
||||
if (isset($order['deliveryAddress']['street']))
|
||||
self::addOrderProperty($optionsOrderProps[$arFields['PERSON_TYPE_ID']]['street'],
|
||||
self::fromJSON($order['deliveryAddress']['street']), $order['externalId']);
|
||||
|
||||
if (isset($order['deliveryAddress']['building']))
|
||||
self::addOrderProperty($optionsOrderProps[$arFields['PERSON_TYPE_ID']]['building'],
|
||||
self::fromJSON($order['deliveryAddress']['bulding']), $order['externalId']);
|
||||
|
||||
if (isset($order['deliveryAddress']['flat']))
|
||||
self::addOrderProperty($optionsOrderProps[$arFields['PERSON_TYPE_ID']]['flat'],
|
||||
self::fromJSON($order['deliveryAddress']['flat']), $order['externalId']);
|
||||
|
||||
if (isset($order['deliveryAddress']['intercomcode']))
|
||||
self::addOrderProperty($optionsOrderProps[$arFields['PERSON_TYPE_ID']]['intercomcode'],
|
||||
self::fromJSON($order['deliveryAddress']['intercomcode']), $order['externalId']);
|
||||
|
||||
if (isset($order['deliveryAddress']['floor']))
|
||||
self::addOrderProperty($optionsOrderProps[$arFields['PERSON_TYPE_ID']]['floor'],
|
||||
self::fromJSON($order['deliveryAddress']['floor']), $order['externalId']);
|
||||
|
||||
if (isset($order['deliveryAddress']['block']))
|
||||
self::addOrderProperty($optionsOrderProps[$arFields['PERSON_TYPE_ID']]['block'],
|
||||
self::fromJSON($order['deliveryAddress']['block']), $order['externalId']);
|
||||
|
||||
if (isset($order['deliveryAddress']['house']))
|
||||
self::addOrderProperty($optionsOrderProps[$arFields['PERSON_TYPE_ID']]['house'],
|
||||
self::fromJSON($order['deliveryAddress']['house']), $order['externalId']);
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($order['phone']))
|
||||
self::addOrderProperty($optionsOrderProps[$arFields['PERSON_TYPE_ID']]['phone'],
|
||||
self::fromJSON($order['phone']), $order['externalId']);
|
||||
|
||||
if (isset($order['email']))
|
||||
self::addOrderProperty($optionsOrderProps[$arFields['PERSON_TYPE_ID']]['email'],
|
||||
self::fromJSON($order['email']), $order['externalId']);
|
||||
|
||||
if (isset($order['firstName']))
|
||||
$contactName['firstName'] = self::fromJSON($order['firstName']);
|
||||
if (isset($order['lastName']))
|
||||
$contactName['lastName'] = self::fromJSON($order['lastName']);
|
||||
if (isset($order['patronymic']))
|
||||
$contactName['patronymic'] = self::fromJSON($order['patronymic']);
|
||||
|
||||
if (isset($contactName) && !empty($contactName))
|
||||
self::addOrderProperty($optionsOrderProps[$arFields['PERSON_TYPE_ID']]['fio'],
|
||||
implode(" ", $contactName), $order['externalId']);
|
||||
|
||||
/*foreach($order['items'] as $item) {
|
||||
$p = CSaleBasket::GetList(
|
||||
array('PRODUCT_ID' => 'ASC'),
|
||||
array('ORDER_ID' => $order['externalId'], 'PRODUCT_ID' => $item['offer']['externalId']))->Fetch();
|
||||
|
||||
if(!$p) // if not found
|
||||
continue;
|
||||
|
||||
// del from basket
|
||||
if(isset($item['deleted']) && $item['deleted']) {
|
||||
CSaleBasket::Delete($p['ID']);
|
||||
continue;
|
||||
}
|
||||
|
||||
// change existing basket items
|
||||
if(!isset($item['offer']) && !$item['offer']['externalId'])
|
||||
continue;
|
||||
|
||||
$arProduct = array();
|
||||
|
||||
// create new
|
||||
if(isset($item['created']) && $item['created']) {
|
||||
$arProduct = array(
|
||||
'FUSER_ID' => $userId,
|
||||
'ORDER_ID' => $order['externalId'],
|
||||
'QUANTITY' => $item['quantity'],
|
||||
'CURRENCY' => $p['CURRENCY'],
|
||||
'LID' => $LID,
|
||||
'PRODUCT_ID' => $item['offer']['externalId'],
|
||||
'PRODUCT_PRICE_ID' => $p['PRODUCT_PRICE_ID'],
|
||||
'WEIGHT' => $p['WEIGHT'],
|
||||
'DELAY' => $p['DELAY'],
|
||||
'CAN_BUY' => $p['CAN_BUY'],
|
||||
'MODULE' => $p['MODULE'],
|
||||
'NOTES' => $p['NOTES'],
|
||||
'PRODUCT_PROVIDER_CLASS' => $p['PRODUCT_PROVIDER_CLASS'],
|
||||
'DETAIL_PAGE_URL' => $p['DETAIL_PAGE_URL'],
|
||||
'CATALOG_XML_ID' => $p['CATALOG_XML_ID'],
|
||||
'PRODUCT_XML_ID' => $p['PRODUCT_XML_ID']
|
||||
);
|
||||
|
||||
if (isset($item['initialPrice']) && $item['initialPrice'])
|
||||
$arProduct['PRICE'] = (double) $item['initialPrice'];
|
||||
|
||||
if (isset($item['discount']) && $item['discount']) {
|
||||
$arProduct['PRICE'] = $arProduct['PRICE'] - (double) $item['disount'];
|
||||
$arProduct['DISCOUNT_PRICE'] = $item['discount'];
|
||||
}
|
||||
|
||||
if (isset($item['discountPercent']) && $item['discountPercent']) {
|
||||
//$arProducts['PRICE'] -- how ?
|
||||
$arProduct['DISCOUNT_VALUE'] = $item['discountPercent'];
|
||||
}
|
||||
|
||||
if (isset($item['offer']['name']) && $item['offer']['name'])
|
||||
$arProduct['NAME'] = $item['offer']['name'];
|
||||
|
||||
CSaleBasket::Add($arProduct);
|
||||
continue;
|
||||
}
|
||||
|
||||
// update old
|
||||
if(isset($item['initialPrice']) && $item['initialPrice'])
|
||||
$arProduct['PRICE'] = (double) $item['initialPrice'];
|
||||
|
||||
if(isset($item['dicount']) && $item['discount']){
|
||||
$arProduct['PRICE'] = $arProducts['PRICE'] - (double) $item['disount'];
|
||||
$arProduct['DISCOUNT_PRICE'] = $item['discount'];
|
||||
}
|
||||
|
||||
if(isset($item['discountPercent']) && $item['discountPercent']) {
|
||||
//$arProducts['PRICE'] -- how ?
|
||||
$arProduct['DISCOUNT_VALUE'] = $item['discountPercent'];
|
||||
}
|
||||
|
||||
if(isset($item['offer']['name']) && $item['offer']['name'])
|
||||
$arProduct['NAME'] = $item['offer']['name'];
|
||||
|
||||
CSaleBasket::Update($p['ID'], $arProduct);
|
||||
}*/
|
||||
|
||||
// orderUpdate
|
||||
$arFields = self::clearArr(array(
|
||||
'PRICE_DELIVERY' => $order['deliveryCost'],
|
||||
'PRICE' => $order['summ'],
|
||||
'DATE_MARKED' => $order['markDatetime'],
|
||||
'USER_ID' => $userId, //$order['customer']
|
||||
'PAY_SYSTEM_ID' => $optionsPayTypes[$order['paymentType']],
|
||||
'PAYED' => $optionsPayment[$order['paymentStatus']],
|
||||
//'PERSON_TYPE_ID' => $optionsOrderTypes[$order['orderType']],
|
||||
'DELIVERY_ID' => $optionsDelivTypes[$order['deliveryType']],
|
||||
'STATUS_ID' => $optionsPayStatuses[$order['status']],
|
||||
'REASON_CANCELED' => $order['statusComment'],
|
||||
'USER_DESCRIPTION' => $order['customerComment'],
|
||||
'COMMENTS' => $order['managerComment']
|
||||
));
|
||||
|
||||
$GLOBALS['INTARO_CRM_FROM_HISTORY'] = true;
|
||||
|
||||
CSaleOrder::Update($order['externalId'], $arFields);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* w+ event in bitrix log
|
||||
*/
|
||||
|
||||
public static function eventLog($auditType, $itemId, $description) {
|
||||
|
||||
CEventLog::Add(array(
|
||||
"SEVERITY" => "SECURITY",
|
||||
"AUDIT_TYPE_ID" => $auditType,
|
||||
"MODULE_ID" => self::$MODULE_ID,
|
||||
"ITEM_ID" => $itemId,
|
||||
"DESCRIPTION" => $description,
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Agent function
|
||||
*
|
||||
* @return self name
|
||||
*/
|
||||
|
||||
public static function uploadOrdersAgent() {
|
||||
self::uploadOrders();
|
||||
$failedIds = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_FAILED_IDS, 0));
|
||||
if(is_array($failedIds) && !empty($failedIds))
|
||||
self::uploadOrders(50, true); // upload failed orders
|
||||
|
||||
return 'ICrmOrderActions::uploadOrdersAgent();';
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Agent function
|
||||
*
|
||||
* @return self name
|
||||
*/
|
||||
|
||||
public static function orderHistoryAgent() {
|
||||
self::orderHistory();
|
||||
return 'ICrmOrderActions::orderHistoryAgent();';
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* creates order or returns array of order and customer for mass upload
|
||||
*
|
||||
* @param type $orderId
|
||||
* @param type $api
|
||||
* @param type $arParams
|
||||
* @param type $send
|
||||
* @return boolean
|
||||
* @return array - array('order' = $order, 'customer' => $customer)
|
||||
*/
|
||||
public static function orderCreate($arFields, $api, $arParams, $send = false) {
|
||||
if(!$api || empty($arParams)) { // add cond to check $arParams
|
||||
return false;
|
||||
}
|
||||
|
||||
if (empty($arFields)) {
|
||||
//handle err
|
||||
self::eventLog('ICrmOrderActions::orderCreate', 'empty($arFields)', 'incorrect order');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$rsUser = CUser::GetByID($arFields['USER_ID']);
|
||||
$arUser = $rsUser->Fetch();
|
||||
|
||||
$createdAt = new \DateTime($arUser['DATE_REGISTER']);
|
||||
$createdAt = $createdAt->format('Y-m-d H:i:s');
|
||||
|
||||
// push customer (for crm)
|
||||
$firstName = self::toJSON($arUser['NAME']);
|
||||
$lastName = self::toJSON($arUser['LAST_NAME']);
|
||||
$patronymic = self::toJSON($arUser['SECOND_NAME']);
|
||||
|
||||
$phonePersonal = array(
|
||||
'number' => self::toJSON($arUser['PERSONAL_PHONE']),
|
||||
'type' => 'mobile'
|
||||
);
|
||||
$phones[] = $phonePersonal;
|
||||
|
||||
$phoneWork = array(
|
||||
'number' => self::toJSON($arUser['WORK_PHONE']),
|
||||
'type' => 'work'
|
||||
);
|
||||
$phones[] = $phoneWork;
|
||||
|
||||
$customer = self::clearArr(array(
|
||||
'externalId' => $arFields['USER_ID'],
|
||||
'lastName' => $lastName,
|
||||
'firstName' => $firstName,
|
||||
'patronymic' => $patronymic,
|
||||
'phones' => $phones,
|
||||
'createdAt' => $createdAt
|
||||
));
|
||||
|
||||
if($send)
|
||||
$customer = $api->customerEdit($customer);
|
||||
|
||||
// error pushing customer
|
||||
if (!$customer) {
|
||||
//handle err
|
||||
self::eventLog('ICrmOrderActions::orderCreate', 'IntaroCrm\RestApi::customerEdit', $api->getLastError());
|
||||
return false;
|
||||
}
|
||||
|
||||
// delivery types
|
||||
$arId = array();
|
||||
if (strpos($arFields['DELIVERY_ID'], ":") !== false)
|
||||
$arId = explode(":", $arFields["DELIVERY_ID"]);
|
||||
|
||||
if ($arId)
|
||||
$resultDeliveryTypeId = $arId[0];
|
||||
else
|
||||
$resultDeliveryTypeId = $arFields['DELIVERY_ID'];
|
||||
|
||||
|
||||
$resOrder = array();
|
||||
$resOrderDeliveryAddress = array();
|
||||
$contactNameArr = array();
|
||||
|
||||
$rsOrderProps = CSaleOrderPropsValue::GetList(array(), array('ORDER_ID' => $arFields['ID']));
|
||||
while ($ar = $rsOrderProps->Fetch()) {
|
||||
switch ($ar['CODE']) {
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['index']: $resOrderDeliveryAddress['index'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
case 'CITY': $resOrderDeliveryAddress['city'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['text']: $resOrderDeliveryAddress['text'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
case 'LOCATION': if(!isset($resOrderDeliveryAddress['city']) && !$resOrderDeliveryAddress['city']) {
|
||||
$resOrderDeliveryAddress['city'] = CSaleLocation::GetByID($ar['VALUE']);
|
||||
$resOrderDeliveryAddress['city'] = self::toJSON($resOrderDeliveryAddress['city']['CITY_NAME_LANG']);
|
||||
}
|
||||
break;
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['fio']: $contactNameArr = self::explodeFIO($ar['VALUE']);
|
||||
break;
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['phone']: $resOrder['phone'] = $ar['VALUE'];
|
||||
break;
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['email']: $resOrder['email'] = $ar['VALUE'];
|
||||
break;
|
||||
}
|
||||
|
||||
if (count($arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']] > 4)) {
|
||||
switch ($ar['CODE']) {
|
||||
/*case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['country']: $resOrderDeliveryAddress['country'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['region']: $resOrderDeliveryAddress['region'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['city']: $resOrderDeliveryAddress['city'] = self::toJSON($ar['VALUE']);
|
||||
break; */
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['street']: $resOrderDeliveryAddress['street'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['building']: $resOrderDeliveryAddress['building'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['flat']: $resOrderDeliveryAddress['flat'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['intercomcode']: $resOrderDeliveryAddress['intercomcode'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['floor']: $resOrderDeliveryAddress['floor'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['block']: $resOrderDeliveryAddress['block'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
case $arParams['optionsOrderProps'][$arFields['PERSON_TYPE_ID']]['house']: $resOrderDeliveryAddress['house'] = self::toJSON($ar['VALUE']);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$items = array();
|
||||
|
||||
$rsOrderBasket = CSaleBasket::GetList(array('PRODUCT_ID' => 'ASC'), array('ORDER_ID' => $arFields['ID']));
|
||||
while ($p = $rsOrderBasket->Fetch()) {
|
||||
$pr = CCatalogProduct::GetList(array('ID' => $p['PRODUCT_ID']))->Fetch();
|
||||
if ($pr)
|
||||
$pr = $pr['PURCHASING_PRICE'];
|
||||
else
|
||||
$pr = '';
|
||||
|
||||
if($p['DISCOUNT_VALUE'])
|
||||
$p['DISCOUNT_PRICE'] = null;
|
||||
|
||||
$items[] = array(
|
||||
'initialPrice' => (double) $p['PRICE'] + (double) $p['DISCOUNT_PRICE'],
|
||||
'purchasePrice' => $pr,
|
||||
'discount' => $p['DISCOUNT_PRICE'],
|
||||
'discountPercent' => $p['DISCOUNT_VALUE'],
|
||||
'quantity' => $p['QUANTITY'],
|
||||
'productId' => $p['PRODUCT_ID'],
|
||||
'productName' => self::toJSON($p['NAME'])
|
||||
);
|
||||
}
|
||||
|
||||
if($arFields['CANCELED'] == 'Y')
|
||||
$arFields['STATUS_ID'] = $arFields['CANCELED'];
|
||||
|
||||
$createdAt = new \DateTime($arFields['DATE_INSERT']);
|
||||
$createdAt = $createdAt->format('Y-m-d H:i:s');
|
||||
|
||||
$resOrder = array(
|
||||
'number' => $arFields['ACCOUNT_NUMBER'],
|
||||
'phone' => $resOrder['phone'],
|
||||
'email' => $resOrder['email'],
|
||||
'deliveryCost' => $arFields['PRICE_DELIVERY'],
|
||||
'summ' => $arFields['PRICE'],
|
||||
'markDateTime' => $arFields['DATE_MARKED'],
|
||||
'externalId' => $arFields['ID'],
|
||||
'customerId' => $arFields['USER_ID'],
|
||||
'paymentType' => $arParams['optionsPayTypes'][$arFields['PAY_SYSTEM_ID']],
|
||||
'paymentStatus' => $arParams['optionsPayment'][$arFields['PAYED']],
|
||||
'orderType' => $arParams['optionsOrderTypes'][$arFields['PERSON_TYPE_ID']],
|
||||
'deliveryType' => $arParams['optionsDelivTypes'][$resultDeliveryTypeId],
|
||||
'status' => $arParams['optionsPayStatuses'][$arFields['STATUS_ID']],
|
||||
'statusComment' => $arFields['REASON_CANCELED'],
|
||||
'customerComment' => $arFields['USER_DESCRIPTION'],
|
||||
'managerComment' => $arFields['COMMENTS'],
|
||||
'createdAt' => $createdAt,
|
||||
'deliveryAddress' => $resOrderDeliveryAddress,
|
||||
'items' => $items
|
||||
);
|
||||
|
||||
|
||||
if(isset($arParams['optionsSites']) && is_array($arParams['optionsSites'])
|
||||
&& in_array($arFields['LID'], $arParams['optionsSites']))
|
||||
$resOrder['site'] = $arFields['LID'];
|
||||
|
||||
// parse fio
|
||||
if(count($contactNameArr) == 1) {
|
||||
$resOrder['firstName'] = $contactNameArr[0];
|
||||
} else {
|
||||
$resOrder['lastName'] = $contactNameArr[0];
|
||||
$resOrder['firstName'] = $contactNameArr[1];
|
||||
$resOrder['patronymic'] = $contactNameArr[2];
|
||||
}
|
||||
|
||||
$resOrder = self::clearArr($resOrder);
|
||||
|
||||
if($send)
|
||||
return $api->orderEdit($resOrder);
|
||||
|
||||
return array(
|
||||
'order' => $resOrder,
|
||||
'customer' => $customer
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* removes all empty fields from arrays
|
||||
* working with nested arrs
|
||||
*
|
||||
* @param type $arr
|
||||
* @return boolean
|
||||
*/
|
||||
public static function clearArr($arr) {
|
||||
if(!$arr || !is_array($arr))
|
||||
return false;
|
||||
|
||||
foreach($arr as $key => $value) {
|
||||
if(!$value || (is_array($value) && empty($value)))
|
||||
unset($arr[$key]);
|
||||
|
||||
if(is_array($value) && !empty($value))
|
||||
$arr[$key] = self::clearArr($value);
|
||||
}
|
||||
|
||||
return $arr;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @global type $APPLICATION
|
||||
* @param type $str in SITE_CHARSET
|
||||
* @return type $str in utf-8
|
||||
*/
|
||||
public static function toJSON($str) {
|
||||
global $APPLICATION;
|
||||
|
||||
return $APPLICATION->ConvertCharset($str, SITE_CHARSET, 'utf-8');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @global type $APPLICATION
|
||||
* @param type $str in utf-8
|
||||
* @return type $str in SITE_CHARSET
|
||||
*/
|
||||
public static function fromJSON($str) {
|
||||
global $APPLICATION;
|
||||
|
||||
return $APPLICATION->ConvertCharset($str, 'utf-8', SITE_CHARSET);
|
||||
}
|
||||
|
||||
public static function explodeFIO($str) {
|
||||
if(!$str)
|
||||
return array();
|
||||
|
||||
$array = explode(" ", self::toJSON($str), 3);
|
||||
$newArray = array();
|
||||
|
||||
foreach($array as $ar) {
|
||||
if(!$ar)
|
||||
continue;
|
||||
|
||||
$newArray[] = $ar;
|
||||
}
|
||||
|
||||
return $newArray;
|
||||
}
|
||||
|
||||
public static function addOrderProperty($code, $value, $order) {
|
||||
if (!$code)
|
||||
return;
|
||||
|
||||
if (!CModule::IncludeModule('sale'))
|
||||
return;
|
||||
|
||||
if ($arProp = CSaleOrderProps::GetList(array(), array('CODE' => $code))->Fetch()) {
|
||||
return CSaleOrderPropsValue::Add(array(
|
||||
'NAME' => $arProp['NAME'],
|
||||
'CODE' => $arProp['CODE'],
|
||||
'ORDER_PROPS_ID' => $arProp['ID'],
|
||||
'ORDER_ID' => $order,
|
||||
'VALUE' => $value,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
public static function getLocationCityId($cityName) {
|
||||
if(!$cityName)
|
||||
return;
|
||||
|
||||
$dbLocation = CSaleLocation::GetList(
|
||||
array(
|
||||
"SORT" => "ASC",
|
||||
"CITY_NAME_LANG" => "ASC"
|
||||
),
|
||||
array("LID" => "ru", "CITY_NAME" => $cityName), false, false, array());
|
||||
|
||||
if($location = $dbLocation->Fetch())
|
||||
return $location['ID'];
|
||||
}
|
||||
}
|
@ -1,499 +0,0 @@
|
||||
<?php
|
||||
namespace IntaroCrm;
|
||||
|
||||
class RestApi
|
||||
{
|
||||
protected $apiUrl;
|
||||
protected $apiKey;
|
||||
protected $apiVersion = '1';
|
||||
|
||||
protected $response;
|
||||
protected $statusCode;
|
||||
protected $parameters;
|
||||
|
||||
/**
|
||||
* @param string $crmUrl - адрес CRM
|
||||
* @param string $apiKey - ключ для работы с api
|
||||
*/
|
||||
public function __construct($crmUrl, $apiKey)
|
||||
{
|
||||
$this->apiUrl = $crmUrl.'/api/v'.$this->apiVersion.'/';
|
||||
$this->apiKey = $apiKey;
|
||||
$this->parameters = array('apiKey' => $this->apiKey);
|
||||
}
|
||||
|
||||
|
||||
public function getStatusCode()
|
||||
{
|
||||
return $this->statusCode;
|
||||
}
|
||||
|
||||
/* Получение кода статуса и сообщения об ошибке */
|
||||
public function getLastError()
|
||||
{
|
||||
if (isset($this->response['errorMsg']) && isset($this->response['errors']))
|
||||
{
|
||||
$result = $this->statusCode . ' ' . $this->response['errorMsg'];
|
||||
foreach ($this->response['errors'] as $error)
|
||||
$result .= ' ' . $error;
|
||||
}
|
||||
elseif (isset($this->response['errorMsg']))
|
||||
$result = $this->statusCode . ' ' . $this->response['errorMsg'];
|
||||
else
|
||||
$result = null;
|
||||
return $result;
|
||||
}
|
||||
|
||||
/* Псообщения об ошибке */
|
||||
public function getLastErrorMessage()
|
||||
{
|
||||
return $this->response['errorMsg'];
|
||||
}
|
||||
|
||||
|
||||
/* Методы для работы с заказами */
|
||||
/**
|
||||
* Получение заказа по id
|
||||
*
|
||||
* @param string $id - идентификатор заказа
|
||||
* @param string $by - поиск заказа по id или externalId
|
||||
* @return array - информация о заказе
|
||||
*/
|
||||
public function orderGet($id, $by = 'externalId')
|
||||
{
|
||||
$url = $this->apiUrl.'orders/'.$id;
|
||||
|
||||
if ($by != 'externalId')
|
||||
$this->parameters['by'] = $by;
|
||||
$result = $this->curlRequest($url);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Создание заказа
|
||||
*
|
||||
* @param array $order- информация о заказе
|
||||
* @return array
|
||||
*/
|
||||
public function orderCreate($order)
|
||||
{
|
||||
$dataJson = json_encode($order);
|
||||
$this->parameters['order'] = $dataJson;
|
||||
|
||||
$url = $this->apiUrl.'orders/create';
|
||||
$result = $this->curlRequest($url, 'POST');
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Изменение заказа
|
||||
*
|
||||
* @param array $order- информация о заказе
|
||||
* @return array
|
||||
*/
|
||||
public function orderEdit($order)
|
||||
{
|
||||
$dataJson = json_encode($order);
|
||||
$this->parameters['order'] = $dataJson;
|
||||
|
||||
$url = $this->apiUrl.'orders/'.$order['externalId'].'/edit';
|
||||
$result = $this->curlRequest($url, 'POST');
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Пакетная загрузка заказов
|
||||
*
|
||||
* @param array $orders - массив заказов
|
||||
* @return array
|
||||
*/
|
||||
public function orderUpload($orders)
|
||||
{
|
||||
$dataJson = json_encode($orders);
|
||||
$this->parameters['orders'] = $dataJson;
|
||||
|
||||
$url = $this->apiUrl.'orders/upload';
|
||||
$result = $this->curlRequest($url, 'POST');
|
||||
if (is_null($result) && isset($result['uploadedOrders']))
|
||||
return $result['uploadedOrders'];
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Обновление externalId у заказов с переданными id
|
||||
*
|
||||
* @param array $orders- массив, содержащий id и externalId заказа
|
||||
* @return array
|
||||
*/
|
||||
public function orderFixExternalIds($order)
|
||||
{
|
||||
$dataJson = json_encode($order);
|
||||
$this->parameters['orders'] = $dataJson;
|
||||
|
||||
$url = $this->apiUrl.'orders/fix-external-ids';
|
||||
$result = $this->curlRequest($url, 'POST');
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаление заказа
|
||||
*
|
||||
* @param string $id - идентификатор заказа
|
||||
* @param string $by - поиск заказа по id или externalId
|
||||
* @return array
|
||||
*/
|
||||
/*
|
||||
public function orderDelete($id, $by = 'externalId')
|
||||
{
|
||||
$url = $this->apiUrl.'orders/'.$id.'/delete';
|
||||
if ($by != 'externalId')
|
||||
$this->parameters['by'] = $by;
|
||||
$result = $this->curlRequest($url, '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';
|
||||
$this->parameters['startDate'] = $startDate;
|
||||
$this->parameters['endDate'] = $endDate;
|
||||
$this->parameters['limit'] = $limit;
|
||||
$this->parameters['offset'] = $offset;
|
||||
|
||||
$result = $this->curlRequest($url);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/* Методы для работы с клиентами */
|
||||
/**
|
||||
* Получение клиента по id
|
||||
*
|
||||
* @param string $id - идентификатор
|
||||
* @param string $by - поиск заказа по id или externalId
|
||||
* @return array - информация о клиенте
|
||||
*/
|
||||
public function customerGet($id, $by = 'externalId')
|
||||
{
|
||||
$url = $this->apiUrl.'customers/'.$id;
|
||||
if ($by != 'externalId')
|
||||
$this->parameters['by'] = $by;
|
||||
$result = $this->curlRequest($url);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Создание клиента
|
||||
*
|
||||
* @param array $customer - информация о клиенте
|
||||
* @return array
|
||||
*/
|
||||
public function customerCreate($customer)
|
||||
{
|
||||
$dataJson = json_encode($customer);
|
||||
$this->parameters['customer'] = $dataJson;
|
||||
|
||||
$url = $this->apiUrl.'customers/create';
|
||||
$result = $this->curlRequest($url, 'POST');
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Редактирование клиента
|
||||
*
|
||||
* @param array $customer - информация о клиенте
|
||||
* @return array
|
||||
*/
|
||||
public function customerEdit($customer)
|
||||
{
|
||||
$dataJson = json_encode($customer);
|
||||
$this->parameters['customer'] = $dataJson;
|
||||
|
||||
$url = $this->apiUrl.'customers/'.$customer['externalId'].'/edit';
|
||||
$result = $this->curlRequest($url, 'POST');
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Пакетная загрузка клиентов
|
||||
*
|
||||
* @param array $customers - массив клиентов
|
||||
* @return array
|
||||
*/
|
||||
public function customerUpload($customers)
|
||||
{
|
||||
$dataJson = json_encode($customers);
|
||||
$this->parameters['customers'] = $dataJson;
|
||||
|
||||
$url = $this->apiUrl.'customers/upload';
|
||||
$result = $this->curlRequest($url, 'POST');
|
||||
if (is_null($result) && isset($result['uploaded']))
|
||||
return $result['uploaded'];
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаление клиента
|
||||
*
|
||||
* @param string $id - идентификатор
|
||||
* @param string $by - поиск заказа по id или externalId
|
||||
* @return array
|
||||
*/
|
||||
/*
|
||||
public function customerDelete($id, $by = 'externalId')
|
||||
{
|
||||
$url = $this->apiUrl.'customers/'.$id.'/delete';
|
||||
if ($by != 'externalId')
|
||||
$this->parameters['by'] = $by;
|
||||
$result = $this->curlRequest($url, 'POST');
|
||||
return $result;
|
||||
}*/
|
||||
|
||||
/**
|
||||
* Получение списка заказов клиента
|
||||
*
|
||||
* @param string $id - идентификатор клиента
|
||||
* @param string $by - поиск заказа по id или externalId
|
||||
* @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, $by = 'externalId')
|
||||
{
|
||||
$url = $this->apiUrl.'customers/'.$id.'/orders';
|
||||
if ($by != 'externalId')
|
||||
$this->parameters['by'] = $by;
|
||||
$this->parameters['startDate'] = $startDate;
|
||||
$this->parameters['endDate'] = $endDate;
|
||||
$this->parameters['limit'] = $limit;
|
||||
$this->parameters['offset'] = $offset;
|
||||
|
||||
$result = $this->curlRequest($url);
|
||||
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);
|
||||
$this->parameters['deliveryType'] = $dataJson;
|
||||
|
||||
$url = $this->apiUrl.'reference/delivery-types/'.$deliveryType['code'].'/edit';
|
||||
$result = $this->curlRequest($url, '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);
|
||||
$this->parameters['paymentType'] = $dataJson;
|
||||
|
||||
$url = $this->apiUrl.'reference/payment-types/'.$paymentType['code'].'/edit';
|
||||
$result = $this->curlRequest($url, '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);
|
||||
$this->parameters['paymentStatus'] = $dataJson;
|
||||
|
||||
$url = $this->apiUrl.'reference/payment-statuses/'.$paymentStatus['code'].'/edit';
|
||||
$result = $this->curlRequest($url, 'POST');
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Получение списка типов заказа
|
||||
*
|
||||
* @return array - массив типов заказа
|
||||
*/
|
||||
public function orderTypesList()
|
||||
{
|
||||
$url = $this->apiUrl.'reference/order-types';
|
||||
$result = $this->curlRequest($url);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Редактирование типа заказа
|
||||
*
|
||||
* @param array $orderType - информация о типе заказа
|
||||
* @return array
|
||||
*/
|
||||
public function orderTypesEdit($orderType)
|
||||
{
|
||||
$dataJson = json_encode($orderType);
|
||||
$this->parameters['orderType'] = $dataJson;
|
||||
|
||||
$url = $this->apiUrl.'reference/order-types/'.$orderType['code'].'/edit';
|
||||
$result = $this->curlRequest($url, 'POST');
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получение списка статусов заказа
|
||||
*
|
||||
* @return array - массив статусов заказа
|
||||
*/
|
||||
public function orderStatusesList()
|
||||
{
|
||||
$url = $this->apiUrl.'reference/statuses';
|
||||
$result = $this->curlRequest($url);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Редактирование статуса заказа
|
||||
*
|
||||
* @param array $status - информация о статусе заказа
|
||||
* @return array
|
||||
*/
|
||||
public function orderStatusEdit($status)
|
||||
{
|
||||
$dataJson = json_encode($status);
|
||||
$this->parameters['status'] = $dataJson;
|
||||
|
||||
$url = $this->apiUrl.'reference/statuses/'.$status['code'].'/edit';
|
||||
$result = $this->curlRequest($url, 'POST');
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Получение списка групп статусов заказа
|
||||
*
|
||||
* @return array - массив групп статусов заказа
|
||||
*/
|
||||
public function orderStatusGroupsList()
|
||||
{
|
||||
$url = $this->apiUrl.'reference/status-groups';
|
||||
$result = $this->curlRequest($url);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Обновление статистики
|
||||
*
|
||||
* @return array - статус вып обновления
|
||||
*/
|
||||
public function statisticUpdate()
|
||||
{
|
||||
$url = $this->apiUrl.'statistic/update';
|
||||
$result = $this->curlRequest($url);
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected function curlRequest($url, $method = 'GET', $format = 'json')
|
||||
{
|
||||
if ($method == 'GET' && !is_null($this->parameters))
|
||||
$url .= '?'.http_build_query($this->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, 30); // times out after 30s
|
||||
|
||||
if ($method == 'POST')
|
||||
{
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->parameters);
|
||||
}
|
||||
|
||||
$response = curl_exec($ch);
|
||||
$this->statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
unset($this->parameters);
|
||||
/* Сброс массива с параметрами */
|
||||
$this->parameters = array('apiKey' => $this->apiKey);
|
||||
|
||||
if (curl_errno($ch))
|
||||
{
|
||||
$this->response = array('errorMsg' => 'Curl error: ' . curl_error($ch));
|
||||
return null;
|
||||
}
|
||||
curl_close($ch);
|
||||
|
||||
$result = (array)json_decode($response, true);
|
||||
$this->response = $result;
|
||||
if ($result['success'] == false)
|
||||
return null;
|
||||
|
||||
unset($result['success']);
|
||||
if (count($result) == 0)
|
||||
return true;
|
||||
return reset($result);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@ -1,251 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* OrderEvent
|
||||
*/
|
||||
class ICrmOrderEvent {
|
||||
|
||||
protected static $MODULE_ID = 'intaro.intarocrm';
|
||||
protected static $CRM_API_HOST_OPTION = 'api_host';
|
||||
protected static $CRM_API_KEY_OPTION = 'api_key';
|
||||
protected static $CRM_ORDER_TYPES_ARR = 'order_types_arr';
|
||||
protected static $CRM_DELIVERY_TYPES_ARR = 'deliv_types_arr';
|
||||
protected static $CRM_PAYMENT_TYPES = 'pay_types_arr';
|
||||
protected static $CRM_PAYMENT_STATUSES = 'pay_statuses_arr';
|
||||
protected static $CRM_PAYMENT = 'payment_arr'; //order payment Y/N
|
||||
protected static $CRM_ORDER_LAST_ID = 'order_last_id';
|
||||
protected static $CRM_ORDER_PROPS = 'order_props';
|
||||
protected static $CRM_ORDER_FAILED_IDS = 'order_failed_ids';
|
||||
|
||||
/**
|
||||
* onBeforeOrderAdd
|
||||
*
|
||||
* @param mixed $arFields - Order arFields
|
||||
*/
|
||||
function onBeforeOrderAdd($arFields = array()) {
|
||||
$GLOBALS['INTARO_CRM_ORDER_ADD'] = true;
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* onUpdateOrder
|
||||
*
|
||||
* @param mixed $ID - Order id
|
||||
* @param mixed $arFields - Order arFields
|
||||
*/
|
||||
function onUpdateOrder($ID, $arFields) {
|
||||
|
||||
if(isset($GLOBALS['INTARO_CRM_ORDER_ADD']) && $GLOBALS['INTARO_CRM_ORDER_ADD'])
|
||||
return;
|
||||
|
||||
if(isset($GLOBALS['INTARO_CRM_FROM_HISTORY']) && $GLOBALS['INTARO_CRM_FROM_HISTORY'])
|
||||
return;
|
||||
|
||||
if(isset($arFields['LOCKED_BY']) && $arFields['LOCKED_BY'])
|
||||
return;
|
||||
|
||||
self::writeDataOnOrderCreate($ID, $arFields);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* onSendOrderMail
|
||||
* in: sale.order.ajax, sale.order.full
|
||||
*
|
||||
* @param mixed $ID - Order id
|
||||
* @param mixed $eventName - Event type
|
||||
* @param mixed $arFields - Order arFields for sending template
|
||||
*/
|
||||
function onSendOrderMail($ID, &$eventName, &$arFields) {
|
||||
if(self::writeDataOnOrderCreate($ID))
|
||||
COption::SetOptionString(self::$MODULE_ID, self::$CRM_ORDER_LAST_ID, $ID);
|
||||
else {
|
||||
$failedIds = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_FAILED_IDS, 0));
|
||||
if(!$failedIds)
|
||||
$failedIds = array();
|
||||
|
||||
$failedIds[] = $ID;
|
||||
|
||||
COption::SetOptionString(self::$MODULE_ID, self::$CRM_ORDER_FAILED_IDS, serialize($failedIds));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* writeDataOnOrderCreate via api
|
||||
*
|
||||
* @param integer $ID - Order Id
|
||||
*/
|
||||
function writeDataOnOrderCreate($ID, $arFields) {
|
||||
|
||||
if (!CModule::IncludeModule('iblock')) {
|
||||
//handle err
|
||||
ICrmOrderActions::eventLog('ICrmOrderEvent::writeDataOnOrderCreate', 'iblock', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!CModule::IncludeModule("sale")) {
|
||||
//handle err
|
||||
ICrmOrderActions::eventLog('ICrmOrderEvent::writeDataOnOrderCreate', 'sale', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!CModule::IncludeModule("catalog")) {
|
||||
//handle err
|
||||
ICrmOrderActions::eventLog('ICrmOrderEvent::writeDataOnOrderCreate', 'catalog', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
$GLOBALS['INTARO_CRM_ORDER_ADD'] = false;
|
||||
$GLOBALS['INTARO_CRM_FROM_HISTORY'] = false;
|
||||
|
||||
$api_host = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_HOST_OPTION, 0);
|
||||
$api_key = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_KEY_OPTION, 0);
|
||||
|
||||
//saved cat params
|
||||
$optionsOrderTypes = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_TYPES_ARR, 0));
|
||||
$optionsDelivTypes = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_DELIVERY_TYPES_ARR, 0));
|
||||
$optionsPayTypes = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT_TYPES, 0));
|
||||
$optionsPayStatuses = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT_STATUSES, 0)); // --statuses
|
||||
$optionsPayment = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT, 0));
|
||||
$optionsOrderProps = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_ORDER_PROPS, 0));
|
||||
|
||||
$api = new IntaroCrm\RestApi($api_host, $api_key);
|
||||
|
||||
$arParams = ICrmOrderActions::clearArr(array(
|
||||
'optionsOrderTypes' => $optionsOrderTypes,
|
||||
'optionsDelivTypes' => $optionsDelivTypes,
|
||||
'optionsPayTypes' => $optionsPayTypes,
|
||||
'optionsPayStatuses' => $optionsPayStatuses,
|
||||
'optionsPayment' => $optionsPayment,
|
||||
'optionsOrderProps' => $optionsOrderProps
|
||||
));
|
||||
|
||||
$arOrder = CSaleOrder::GetById($ID);
|
||||
|
||||
if (is_array($arFields) && !empty($arFields)) {
|
||||
$arFieldsNew = array(
|
||||
'USER_ID' => $arOrder['USER_ID'],
|
||||
'ID' => $ID,
|
||||
'PERSON_TYPE_ID' => $arOrder['PERSON_TYPE_ID'],
|
||||
'CANCELED' => $arOrder['CANCELED'],
|
||||
'STATUS_ID' => $arOrder['STATUS_ID'],
|
||||
'DATE_INSERT' => $arOrder['DATE_INSERT'],
|
||||
'LID' => $arOrder['LID']
|
||||
);
|
||||
|
||||
$arFieldsNew = array_merge($arFieldsNew, $arFields);
|
||||
$arOrder = $arFieldsNew;
|
||||
}
|
||||
|
||||
$result = ICrmOrderActions::orderCreate($arOrder, $api, $arParams, true);
|
||||
|
||||
if(!$result) {
|
||||
ICrmOrderActions::eventLog('ICrmOrderEvent::writeDataOnOrderCreate', 'ICrmOrderActions::orderCreate', 'error during creating order');
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param type $ID -- orderId
|
||||
* @param type $cancel -- Y / N - cancel order status
|
||||
* @param type $reason -- cancel reason
|
||||
* @return boolean
|
||||
*/
|
||||
function onSaleCancelOrder($ID, $cancel, $reason) {
|
||||
if(!$ID || !$cancel || ($cancel != 'Y'))
|
||||
return true;
|
||||
|
||||
if (!CModule::IncludeModule('iblock')) {
|
||||
//handle err
|
||||
ICrmOrderActions::eventLog('ICrmOrderEvent::onSaleCancelOrder', 'iblock', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!CModule::IncludeModule("sale")) {
|
||||
//handle err
|
||||
ICrmOrderActions::eventLog('ICrmOrderEvent::onSaleCancelOrder', 'sale', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!CModule::IncludeModule("catalog")) {
|
||||
//handle err
|
||||
ICrmOrderActions::eventLog('ICrmOrderEvent::onSaleCancelOrder', 'catalog', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
$api_host = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_HOST_OPTION, 0);
|
||||
$api_key = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_KEY_OPTION, 0);
|
||||
|
||||
//saved cat params
|
||||
$optionsPayStatuses = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT_STATUSES, 0)); // --statuses
|
||||
|
||||
$api = new IntaroCrm\RestApi($api_host, $api_key);
|
||||
|
||||
$order = array(
|
||||
'externalId' => (int) $ID,
|
||||
'status' => $optionsPayStatuses[$cancel],
|
||||
'statusComment' => ICrmOrderActions::toJSON($reason)
|
||||
);
|
||||
|
||||
$api->orderEdit($order);
|
||||
|
||||
// error pushing order
|
||||
if ($api->getStatusCode() != 201)
|
||||
ICrmOrderActions::eventLog('ICrmOrderEvent::onSaleCancelOrder', 'IntaroCrm\RestApi::orderEdit', $api->getLastError());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param type $ID -- orderId
|
||||
* @param type $payed -- Y / N - pay order status
|
||||
* @return boolean
|
||||
*/
|
||||
function onSalePayOrder($ID, $payed) {
|
||||
if(!$ID || !$payed || ($payed != 'Y'))
|
||||
return true;
|
||||
|
||||
if (!CModule::IncludeModule('iblock')) {
|
||||
//handle err
|
||||
ICrmOrderActions::eventLog('ICrmOrderEvent::onSalePayOrder', 'iblock', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!CModule::IncludeModule("sale")) {
|
||||
//handle err
|
||||
ICrmOrderActions::eventLog('ICrmOrderEvent::onSalePayOrder', 'sale', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!CModule::IncludeModule("catalog")) {
|
||||
//handle err
|
||||
ICrmOrderActions::eventLog('ICrmOrderEvent::onSalePayOrder', 'catalog', 'module not found');
|
||||
return true;
|
||||
}
|
||||
|
||||
$api_host = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_HOST_OPTION, 0);
|
||||
$api_key = COption::GetOptionString(self::$MODULE_ID, self::$CRM_API_KEY_OPTION, 0);
|
||||
|
||||
//saved cat params
|
||||
$optionsPayment = unserialize(COption::GetOptionString(self::$MODULE_ID, self::$CRM_PAYMENT, 0));
|
||||
|
||||
$api = new IntaroCrm\RestApi($api_host, $api_key);
|
||||
|
||||
$order = array(
|
||||
'externalId' => (int) $ID,
|
||||
'paymentStatus' => $optionsPayment[$payed]
|
||||
);
|
||||
|
||||
$api->orderEdit($order);
|
||||
|
||||
|
||||
// error pushing order
|
||||
if ($api->getStatusCode() != 201)
|
||||
ICrmOrderActions::eventLog('ICrmOrderEvent::onSalePayOrder', 'IntaroCrm\RestApi::orderEdit', $api->getLastError());
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
1
intaro.intarocrm/description.ru
Normal file
1
intaro.intarocrm/description.ru
Normal file
@ -0,0 +1 @@
|
||||
* Изменен протокол передачи данных с http на https.
|
@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
set_time_limit(0);
|
||||
|
||||
global $APPLICATION;
|
||||
if (!CModule::IncludeModule("iblock"))
|
||||
return;
|
||||
if (!CModule::IncludeModule("catalog"))
|
||||
return;
|
||||
if (!CModule::IncludeModule("intaro.intarocrm"))
|
||||
return;
|
||||
|
||||
$iblockProperties = Array(
|
||||
"article" => "article",
|
||||
"manufacturer" => "manufacturer",
|
||||
"color" =>"color",
|
||||
"weight" => "weight",
|
||||
"size" => "size",
|
||||
);
|
||||
$IBLOCK_PROPERTY_SKU = array();
|
||||
foreach ($iblockProperties as $prop) {
|
||||
$skuProps = ('IBLOCK_PROPERTY_SKU' . "_" . $prop);
|
||||
$skuProps = $$skuProps;
|
||||
foreach ($skuProps as $iblock => $val) {
|
||||
$IBLOCK_PROPERTY_SKU[$iblock][$prop] = $val;
|
||||
}
|
||||
}
|
||||
$IBLOCK_PROPERTY_PRODUCT = array();
|
||||
foreach ($iblockProperties as $prop) {
|
||||
$skuProps = "IBLOCK_PROPERTY_PRODUCT" . "_" . $prop;
|
||||
$skuProps = $$skuProps;
|
||||
foreach ($skuProps as $iblock => $val) {
|
||||
$IBLOCK_PROPERTY_PRODUCT[$iblock][$prop] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$loader = new ICMLLoader();
|
||||
$loader->iblocks = $IBLOCK_EXPORT;
|
||||
$loader->propertiesSKU = $IBLOCK_PROPERTY_SKU;
|
||||
$loader->propertiesProduct = $IBLOCK_PROPERTY_PRODUCT;
|
||||
$loader->filename = $SETUP_FILE_NAME;
|
||||
$loader->application = $APPLICATION;
|
||||
$loader->Load();
|
@ -1,468 +0,0 @@
|
||||
<?
|
||||
|
||||
$iblockProperties = Array(
|
||||
"article" => "article",
|
||||
"manufacturer" => "manufacturer",
|
||||
"color" =>"color",
|
||||
"weight" => "weight",
|
||||
"size" => "size",
|
||||
);
|
||||
|
||||
if(!check_bitrix_sessid()) return;
|
||||
|
||||
__IncludeLang(GetLangFileName($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/intaro.intarocrm/lang/", "/icml_export_setup.php"));
|
||||
|
||||
if (($ACTION == 'EXPORT' || $ACTION == 'EXPORT_EDIT' || $ACTION == 'EXPORT_COPY') && $STEP == 1)
|
||||
{
|
||||
|
||||
|
||||
if (isset($arOldSetupVars['SETUP_FILE_NAME']))
|
||||
$SETUP_FILE_NAME = $arOldSetupVars['SETUP_FILE_NAME'];
|
||||
if (isset($arOldSetupVars['SETUP_PROFILE_NAME']))
|
||||
$SETUP_PROFILE_NAME = $arOldSetupVars['SETUP_PROFILE_NAME'];
|
||||
if (isset($arOldSetupVars['IBLOCK_EXPORT']))
|
||||
$IBLOCK_EXPORT = $arOldSetupVars['IBLOCK_EXPORT'];
|
||||
|
||||
$IBLOCK_PROPERTY_SKU = array();
|
||||
foreach ($iblockProperties as $prop) {
|
||||
foreach ($arOldSetupVars['IBLOCK_PROPERTY_SKU'. '_' . $prop] as $iblock => $val) {
|
||||
$IBLOCK_PROPERTY_SKU[$iblock][$prop] = $val;
|
||||
}
|
||||
}
|
||||
$IBLOCK_PROPERTY_PRODUCT = array();
|
||||
foreach ($iblockProperties as $prop) {
|
||||
foreach ($arOldSetupVars['IBLOCK_PROPERTY_PRODUCT'. '_' . $prop] as $iblock => $val) {
|
||||
$IBLOCK_PROPERTY_PRODUCT[$iblock][$prop] = $val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($STEP>1)
|
||||
{
|
||||
|
||||
if (strlen($SETUP_FILE_NAME)<=0)
|
||||
{
|
||||
$arSetupErrors[] = GetMessage("CET_ERROR_NO_FILENAME");
|
||||
}
|
||||
elseif ($APPLICATION->GetFileAccessPermission($SETUP_FILE_NAME) < "W")
|
||||
{
|
||||
$arSetupErrors[] = str_replace("#FILE#", $SETUP_FILE_NAME, GetMessage('CET_YAND_RUN_ERR_SETUP_FILE_ACCESS_DENIED'));
|
||||
}
|
||||
|
||||
if (($ACTION=="EXPORT_SETUP" || $ACTION == 'EXPORT_EDIT' || $ACTION == 'EXPORT_COPY') && strlen($SETUP_PROFILE_NAME)<=0)
|
||||
{
|
||||
$arSetupErrors[] = GetMessage("CET_ERROR_NO_PROFILE_NAME");
|
||||
}
|
||||
|
||||
if (!empty($arSetupErrors))
|
||||
{
|
||||
$STEP = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($arSetupErrors))
|
||||
echo ShowError(implode('<br />', $arSetupErrors));
|
||||
|
||||
|
||||
if ($STEP==1)
|
||||
{
|
||||
|
||||
|
||||
?>
|
||||
|
||||
<style type="text/css">
|
||||
.iblock-export-table-display-none {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
<form method="post" action="<?php echo $APPLICATION->GetCurPage(); ?>" >
|
||||
<?if ($ACTION == 'EXPORT_EDIT' || $ACTION == 'EXPORT_COPY')
|
||||
{
|
||||
?><input type="hidden" name="PROFILE_ID" value="<? echo intval($PROFILE_ID); ?>"><?
|
||||
}
|
||||
?>
|
||||
|
||||
<h3><?=GetMessage("SETTINGS_INFOBLOCK");?></h3>
|
||||
<font class="text"><?=GetMessage("EXPORT_CATALOGS");?><br><br></font>
|
||||
<?
|
||||
if (!isset($IBLOCK_EXPORT) || !is_array($IBLOCK_EXPORT))
|
||||
{
|
||||
$IBLOCK_EXPORT = array();
|
||||
}
|
||||
|
||||
$iblockPropertiesName = Array(
|
||||
"article" => GetMessage("PROPERTY_ARTICLE_HEADER_NAME"),
|
||||
"manufacturer" => GetMessage("PROPERTY_MANUFACTURER_HEADER_NAME"),
|
||||
"color" => GetMessage("PROPERTY_COLOR_HEADER_NAME"),
|
||||
"weight" => GetMessage("PROPERTY_WEIGHT_HEADER_NAME"),
|
||||
"size" => GetMessage("PROPERTY_SIZE_HEADER_NAME"),
|
||||
);
|
||||
|
||||
$iblockPropertiesHint = Array(
|
||||
"article" => Array("ARTICLE", "ART", "ARTNUMBER", "ARTICUL", "ARTIKUL"),
|
||||
"manufacturer" => Array("MANUFACTURER", "PROISVODITEL", "PROISVOD", "PROISV"),
|
||||
"color" => Array("COLOR", "CVET"),
|
||||
"weight" => Array("WEIGHT", "VES", "VEC"),
|
||||
"size" => Array("SIZE", "RAZMER"),
|
||||
);
|
||||
|
||||
|
||||
$boolAll = false;
|
||||
$intCountChecked = 0;
|
||||
$intCountAvailIBlock = 0;
|
||||
$arIBlockList = array();
|
||||
$db_res = CIBlock::GetList(Array("IBLOCK_TYPE"=>"ASC", "NAME"=>"ASC"),array('CHECK_PERMISSIONS' => 'Y','MIN_PERMISSION' => 'W'));
|
||||
while ($iblock = $db_res->Fetch())
|
||||
{
|
||||
if ($arCatalog = CCatalog::GetByIDExt($iblock["ID"]))
|
||||
{
|
||||
if($arCatalog['CATALOG_TYPE'] == "D" || $arCatalog['CATALOG_TYPE'] == "X" || $arCatalog['CATALOG_TYPE'] == "P")
|
||||
{
|
||||
$propertiesSKU = null;
|
||||
if ($arCatalog['CATALOG_TYPE'] == "X" || $arCatalog['CATALOG_TYPE'] == "P")
|
||||
{
|
||||
$iblockOffer = CCatalogSKU::GetInfoByProductIBlock($iblock["ID"]);
|
||||
|
||||
$db_properties = CIBlock::GetProperties($iblockOffer['IBLOCK_ID'], Array());
|
||||
while($prop = $db_properties->Fetch())
|
||||
$propertiesSKU[] = $prop;
|
||||
|
||||
$oldPropertySKU = null;
|
||||
if (isset($IBLOCK_PROPERTY_SKU[$iblock['ID']])) {
|
||||
foreach ($iblockPropertiesName as $key => $prop) {
|
||||
$oldPropertySKU[$key] = $IBLOCK_PROPERTY_SKU[$iblock['ID']][$key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$propertiesProduct = null;
|
||||
$db_properties = CIBlock::GetProperties($iblock['ID'], Array());
|
||||
while($prop = $db_properties->Fetch())
|
||||
$propertiesProduct[] = $prop;
|
||||
|
||||
$oldPropertyProduct = null;
|
||||
if (isset($IBLOCK_PROPERTY_PRODUCT[$iblock['ID']])) {
|
||||
foreach ($iblockPropertiesName as $key => $prop) {
|
||||
$oldPropertyProduct[$key] = $IBLOCK_PROPERTY_PRODUCT[$iblock['ID']][$key];
|
||||
}
|
||||
}
|
||||
|
||||
$arSiteList = array();
|
||||
$rsSites = CIBlock::GetSite($iblock["ID"]);
|
||||
while ($arSite = $rsSites->Fetch())
|
||||
{
|
||||
$arSiteList[] = $arSite["SITE_ID"];
|
||||
}
|
||||
|
||||
if (count($IBLOCK_EXPORT) != 0)
|
||||
$boolExport = (in_array($iblock['ID'], $IBLOCK_EXPORT));
|
||||
else
|
||||
$boolExport = true;
|
||||
|
||||
|
||||
$arIBlockList[] = array(
|
||||
'ID' => $iblock['ID'],
|
||||
'NAME' => $iblock['NAME'],
|
||||
'IBLOCK_TYPE_ID' => $iblock['IBLOCK_TYPE_ID'],
|
||||
'IBLOCK_EXPORT' => $boolExport,
|
||||
'PROPERTIES_SKU' => $propertiesSKU,
|
||||
'PROPERTIES_PRODUCT' => $propertiesProduct,
|
||||
'OLD_PROPERTY_SKU_SELECT' => $oldPropertySKU,
|
||||
'OLD_PROPERTY_PRODUCT_SELECT' => $oldPropertyProduct,
|
||||
'SITE_LIST' => '('.implode(' ',$arSiteList).')',
|
||||
);
|
||||
|
||||
if ($boolExport)
|
||||
$intCountChecked++;
|
||||
$intCountAvailIBlock++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (count($IBLOCK_EXPORT) != 0) {
|
||||
if ($intCountChecked == $intCountAvailIBlock)
|
||||
$boolAll = true;
|
||||
} else {
|
||||
$intCountChecked = $intCountAvailIBlock;
|
||||
$boolAll = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
||||
<font class="text" style="font-weight: bold;"><?=GetMessage("CHECK_ALL_INFOBLOCKS");?></font>
|
||||
<input
|
||||
style="vertical-align: middle;"
|
||||
type="checkbox"
|
||||
name="icml_export_all"
|
||||
id="icml_export_all"
|
||||
value="Y"
|
||||
onclick="checkAll(this,<? echo $intCountAvailIBlock; ?>);"
|
||||
<? echo ($boolAll ? ' checked' : ''); ?>>
|
||||
</br>
|
||||
</br>
|
||||
<div>
|
||||
<? $checkBoxCounter = 0;?>
|
||||
<? foreach ($arIBlockList as $key => $arIBlock):?>
|
||||
<div>
|
||||
<div>
|
||||
<font class="text" style="font-weight: bold;"><? echo htmlspecialcharsex("[".$arIBlock["IBLOCK_TYPE_ID"]."] ".$arIBlock["NAME"]." ".$arIBlock['SITE_LIST']); ?></font>
|
||||
<input
|
||||
type="checkbox"
|
||||
name="IBLOCK_EXPORT[<?=$arIBlock["ID"]?>]"
|
||||
id="IBLOCK_EXPORT<?=++$checkBoxCounter?>"
|
||||
value="<?=$arIBlock["ID"]?>"
|
||||
<? if ($arIBlock['IBLOCK_EXPORT']) echo " checked"; ?>
|
||||
onclick="checkOne(this,<? echo $intCountAvailIBlock; ?>);"
|
||||
>
|
||||
</div>
|
||||
<br>
|
||||
<div id="IBLOCK_EXPORT_TABLE<?=$checkBoxCounter?>">
|
||||
<table class="adm-list-table" id="export_setup" <?=($arIBlock['PROPERTIES_SKU'] == null ? 'style="width: 66%;"': "" )?> >
|
||||
<thead>
|
||||
<tr class="adm-list-table-header">
|
||||
<td class="adm-list-table-cell">
|
||||
<div class="adm-list-table-cell-inner"><?=GetMessage("LOADED_PROPERTY");?></div>
|
||||
</td>
|
||||
<td class="adm-list-table-cell">
|
||||
<div class="adm-list-table-cell-inner"><?=GetMessage("PROPERTY_PRODUCT_HEADER_NAME");?></div>
|
||||
</td>
|
||||
<? if ($arIBlock['PROPERTIES_SKU'] != null): ?>
|
||||
<td class="adm-list-table-cell">
|
||||
<div class="adm-list-table-cell-inner"><?=GetMessage("PROPERTY_OFFER_HEADER_NAME");?></div>
|
||||
</td>
|
||||
<? endif;?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<? foreach ($iblockPropertiesName as $key => $property): ?>
|
||||
<? $productSelected = false;?>
|
||||
<tr class="adm-list-table-row">
|
||||
<td class="adm-list-table-cell">
|
||||
<? echo htmlspecialcharsex($property); ?>
|
||||
</td>
|
||||
<td class="adm-list-table-cell">
|
||||
<select
|
||||
style="width: 200px;"
|
||||
id="IBLOCK_PROPERTY_PRODUCT_<?=$key?><?=$arIBlock["ID"]?>"
|
||||
name="IBLOCK_PROPERTY_PRODUCT_<?=$key?>[<?=$arIBlock["ID"]?>]"
|
||||
class="property-export"
|
||||
onchange="propertyChange(this);">
|
||||
<option value=""></option>
|
||||
<? foreach ($arIBlock['PROPERTIES_PRODUCT'] as $prop): ?>
|
||||
<option value="<?=$prop['CODE'] ?>"
|
||||
<?
|
||||
if ($arIBlock['OLD_PROPERTY_PRODUCT_SELECT'] != null) {
|
||||
if ($prop["CODE"] == $arIBlock['OLD_PROPERTY_PRODUCT_SELECT'][$key] ) {
|
||||
echo " selected";
|
||||
$productSelected = true;
|
||||
}
|
||||
} else {
|
||||
foreach ($iblockPropertiesHint[$key] as $hint) {
|
||||
if ($prop["CODE"] == $hint ) {
|
||||
echo " selected";
|
||||
$productSelected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
>
|
||||
<?=$prop["NAME"];?>
|
||||
</option>
|
||||
<? endforeach;?>
|
||||
</select>
|
||||
</td>
|
||||
<? if ($arIBlock['PROPERTIES_SKU'] != null): ?>
|
||||
<td class="adm-list-table-cell">
|
||||
<select
|
||||
style="width: 200px;"
|
||||
id="IBLOCK_PROPERTY_SKU_<?=$key?><?=$arIBlock["ID"]?>"
|
||||
name="IBLOCK_PROPERTY_SKU_<?=$key?>[<?=$arIBlock["ID"]?>]"
|
||||
class="property-export"
|
||||
onchange="propertyChange(this);">
|
||||
|
||||
<option value=""></option>
|
||||
<? foreach ($arIBlock['PROPERTIES_SKU'] as $prop): ?>
|
||||
<option value="<?=$prop['CODE'] ?>"
|
||||
<?
|
||||
if (!$productSelected) {
|
||||
if ($arIBlock['OLD_PROPERTY_SKU_SELECT'] != null) {
|
||||
if ($prop["CODE"] == $arIBlock['OLD_PROPERTY_SKU_SELECT'][$key] ) {
|
||||
echo " selected";
|
||||
}
|
||||
} else {
|
||||
foreach ($iblockPropertiesHint[$key] as $hint) {
|
||||
if ($prop["CODE"] == $hint ) {
|
||||
echo " selected";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
>
|
||||
<?=$prop["NAME"];?>
|
||||
</option>
|
||||
<? endforeach;?>
|
||||
</select>
|
||||
</td>
|
||||
<? endif;?>
|
||||
</tr>
|
||||
<? endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<? endforeach;?>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="count_checked" id="count_checked" value="<? echo $intCountChecked; ?>">
|
||||
<br>
|
||||
|
||||
<h3><?=GetMessage("SETTINGS_EXPORT");?></h3>
|
||||
|
||||
<font class="text"><?=GetMessage("FILENAME");?><br><br></font>
|
||||
<input type="text" name="SETUP_FILE_NAME"
|
||||
value="<?=htmlspecialcharsbx(strlen($SETUP_FILE_NAME) > 0 ?
|
||||
$SETUP_FILE_NAME :
|
||||
(COption::GetOptionString(
|
||||
'catalog',
|
||||
'export_default_path',
|
||||
'/bitrix/catalog_export/'))
|
||||
.'intarocrm'/* .mt_rand(0, 999999) */.'.xml'
|
||||
); ?>" size="50">
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
|
||||
<?if ($ACTION=="EXPORT_SETUP" || $ACTION == 'EXPORT_EDIT' || $ACTION == 'EXPORT_COPY'):?>
|
||||
<font class="text"><?=GetMessage("PROFILE_NAME");?><br><br></font>
|
||||
<input
|
||||
type="text"
|
||||
name="SETUP_PROFILE_NAME"
|
||||
value="<?echo htmlspecialchars($SETUP_PROFILE_NAME)?>"
|
||||
size="50">
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<?endif;?>
|
||||
|
||||
|
||||
<script type="text/javascript" src="/bitrix/js/main/jquery/jquery-1.7.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
function checkAll(obj,cnt)
|
||||
{
|
||||
for (i = 0; i < cnt; i++)
|
||||
{
|
||||
if (obj.checked)
|
||||
BX.removeClass('IBLOCK_EXPORT_TABLE'+(i+1),"iblock-export-table-display-none");
|
||||
}
|
||||
var table = BX(obj.id.replace('IBLOCK_EXPORT','IBLOCK_EXPORT_TABLE'));
|
||||
if (obj.checked)
|
||||
BX.removeClass(table,"iblock-export-table-display-none");
|
||||
var easing = new BX.easing({
|
||||
duration : 150,
|
||||
start : {opacity : obj.checked ? 0 : 100 },
|
||||
finish : {opacity: obj.checked ? 100 : 0 },
|
||||
transition : BX.easing.transitions.linear,
|
||||
step : function(state){
|
||||
for (i = 0; i < cnt; i++)
|
||||
{
|
||||
BX('IBLOCK_EXPORT_TABLE'+(i+1)).style.opacity = state.opacity/100;
|
||||
}
|
||||
},
|
||||
complete : function() {
|
||||
for (i = 0; i < cnt; i++)
|
||||
{
|
||||
if (!obj.checked)
|
||||
BX.addClass('IBLOCK_EXPORT_TABLE'+(i+1),"iblock-export-table-display-none");
|
||||
}
|
||||
}
|
||||
});
|
||||
easing.animate();
|
||||
var boolCheck = obj.checked;
|
||||
for (i = 0; i < cnt; i++)
|
||||
{
|
||||
BX('IBLOCK_EXPORT'+(i+1)).checked = boolCheck;
|
||||
}
|
||||
BX('count_checked').value = (boolCheck ? cnt : 0);
|
||||
};
|
||||
function checkOne(obj,cnt)
|
||||
{
|
||||
var table = BX(obj.id.replace('IBLOCK_EXPORT','IBLOCK_EXPORT_TABLE'));
|
||||
if (obj.checked)
|
||||
BX.removeClass(table,"iblock-export-table-display-none");
|
||||
var easing = new BX.easing({
|
||||
duration : 150,
|
||||
start : {opacity : obj.checked ? 0 : 100 },
|
||||
finish : {opacity: obj.checked ? 100 : 0 },
|
||||
transition : BX.easing.transitions.linear,
|
||||
step : function(state){
|
||||
table.style.opacity = state.opacity/100;
|
||||
},
|
||||
complete : function() {
|
||||
if (!obj.checked)
|
||||
BX.addClass(table,"iblock-export-table-display-none");
|
||||
}
|
||||
});
|
||||
easing.animate();
|
||||
var boolCheck = obj.checked;
|
||||
var intCurrent = parseInt(BX('count_checked').value);
|
||||
intCurrent += (boolCheck ? 1 : -1);
|
||||
BX('icml_export_all').checked = (intCurrent < cnt ? false : true);
|
||||
BX('count_checked').value = intCurrent;
|
||||
};
|
||||
function propertyChange(obj)
|
||||
{
|
||||
if (BX(obj.id).value !== 'none') {
|
||||
if (obj.id.indexOf("SKU") !== -1)
|
||||
BX(obj.id.replace('SKU','PRODUCT')).value = 'none';
|
||||
else
|
||||
BX(obj.id.replace('PRODUCT','SKU')).value = 'none';
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
<?//Следующие переменные должны быть обязательно установлены?>
|
||||
<?=bitrix_sessid_post();?>
|
||||
|
||||
<?
|
||||
$vals = "SETUP_FILE_NAME,IBLOCK_EXPORT";
|
||||
foreach ($iblockProperties as $val) {
|
||||
$vals .= ",IBLOCK_PROPERTY_SKU_" . $val;
|
||||
$vals .= ",IBLOCK_PROPERTY_PRODUCT_" . $val;
|
||||
}
|
||||
|
||||
?>
|
||||
<input type="hidden" name="lang" value="<?echo LANGUAGE_ID ?>">
|
||||
<input type="hidden" name="ACT_FILE" value="<?echo htmlspecialcharsbx($_REQUEST["ACT_FILE"]) ?>">
|
||||
<input type="hidden" name="ACTION" value="<?echo htmlspecialcharsbx($ACTION) ?>">
|
||||
<input type="hidden" name="STEP" value="<?echo intval($STEP) + 1 ?>">
|
||||
<input type="hidden" name="SETUP_FIELDS_LIST" value="<? echo $vals ?>">
|
||||
<input type="submit" value="<?echo ($ACTION=="EXPORT")?GetMessage("CET_EXPORT"):GetMessage("CET_SAVE")?>">
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
<?
|
||||
}
|
||||
elseif ($STEP==2)
|
||||
{
|
||||
$FINITE = true;
|
||||
}
|
||||
|
||||
?>
|
@ -1,10 +0,0 @@
|
||||
<?php
|
||||
CModule::AddAutoloadClasses(
|
||||
'intaro.intarocrm', // module name
|
||||
array (
|
||||
'IntaroCrm\RestApi' => 'classes/general/RestApi.php',
|
||||
'ICrmOrderActions' => 'classes/general/ICrmOrderActions.php',
|
||||
'ICMLLoader' => 'classes/general/ICMLLoader.php',
|
||||
'ICrmOrderEvent' => 'classes/general/events/ICrmOrderEvent.php'
|
||||
)
|
||||
);
|
@ -1,3 +0,0 @@
|
||||
<?
|
||||
//<title>IntaroCRM</title>
|
||||
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/intaro.intarocrm/export/export_run.php");
|
@ -1,3 +0,0 @@
|
||||
<?
|
||||
//<title>IntaroCRM</title>
|
||||
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/intaro.intarocrm/export/export_setup.php");
|
@ -440,6 +440,7 @@ class intaro_intarocrm extends CModule {
|
||||
|
||||
// form correct url
|
||||
$api_host = parse_url($api_host);
|
||||
if($api_host['scheme'] != 'https') $api_host['scheme'] = 'https';
|
||||
$api_host = $api_host['scheme'] . '://' . $api_host['host'];
|
||||
|
||||
if (!$api_host || !$api_key) {
|
||||
@ -823,33 +824,20 @@ class intaro_intarocrm extends CModule {
|
||||
else
|
||||
$iblocks = $_POST['IBLOCK_EXPORT'];
|
||||
|
||||
$iblockProperties = Array(
|
||||
"article" => "article",
|
||||
"manufacturer" => "manufacturer",
|
||||
"color" =>"color",
|
||||
"weight" => "weight",
|
||||
"size" => "size",
|
||||
);
|
||||
|
||||
$propertiesSKU = array();
|
||||
foreach ($iblockProperties as $prop) {
|
||||
foreach ($_POST['IBLOCK_PROPERTY_SKU'. '_' . $prop] as $iblock => $val) {
|
||||
$propertiesSKU[$iblock][$prop] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
$propertiesProduct = array();
|
||||
foreach ($iblockProperties as $prop) {
|
||||
foreach ($_POST['IBLOCK_PROPERTY_PRODUCT'. '_' . $prop] as $iblock => $val) {
|
||||
$propertiesProduct[$iblock][$prop] = $val;
|
||||
}
|
||||
}
|
||||
if (!isset($_POST['IBLOCK_PROPERTY_ARTICLE']))
|
||||
$arResult['errCode'] = 'ERR_FIELDS_ARTICLE';
|
||||
else
|
||||
$articleProperties = $_POST['IBLOCK_PROPERTY_ARTICLE'];
|
||||
|
||||
if (!isset($_POST['SETUP_FILE_NAME']))
|
||||
$arResult['errCode'] = 'ERR_FIELDS_FILE';
|
||||
else
|
||||
$filename = $_POST['SETUP_FILE_NAME'];
|
||||
|
||||
if (count($iblocks) < count($articleProperties))
|
||||
$arResult['errCode'] = 'ERR_ARTICLE_IBLOCK';
|
||||
|
||||
|
||||
if (!isset($_POST['TYPE_LOADING']))
|
||||
$typeLoading = 0;
|
||||
else
|
||||
@ -870,16 +858,15 @@ class intaro_intarocrm extends CModule {
|
||||
|
||||
$arOldValues = Array(
|
||||
'IBLOCK_EXPORT' => $iblocks,
|
||||
'IBLOCK_PROPERTY_SKU' => $propertiesSKU,
|
||||
'IBLOCK_PROPERTY_PRODUCT' => $propertiesProduct,
|
||||
'IBLOCK_PROPERTY_ARTICLE' => $articleProperties,
|
||||
'SETUP_FILE_NAME' => $filename,
|
||||
'SETUP_PROFILE_NAME' => $profileName
|
||||
);
|
||||
global $oldValues;
|
||||
$oldValues = $arOldValues;
|
||||
$APPLICATION->IncludeAdminFile(
|
||||
GetMessage('MODULE_INSTALL_TITLE'),
|
||||
$_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . $this->MODULE_ID . '/install/step4.php'
|
||||
GetMessage('MODULE_INSTALL_TITLE'),
|
||||
$_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . $this->MODULE_ID . '/install/step5.php'
|
||||
);
|
||||
return;
|
||||
}
|
||||
@ -892,12 +879,10 @@ class intaro_intarocrm extends CModule {
|
||||
|
||||
$loader = new ICMLLoader();
|
||||
$loader->iblocks = $iblocks;
|
||||
$loader->propertiesProduct = $propertiesProduct;
|
||||
$loader->propertiesSKU = $propertiesSKU;
|
||||
$loader->articleProperties = $articleProperties;
|
||||
$loader->filename = $filename;
|
||||
$loader->application = $APPLICATION;
|
||||
$loader->Load();
|
||||
|
||||
}
|
||||
|
||||
if ($typeLoading == 'agent' || $typeLoading == 'cron') {
|
||||
@ -911,18 +896,18 @@ class intaro_intarocrm extends CModule {
|
||||
}
|
||||
}
|
||||
}
|
||||
$ar = $this->GetProfileSetupVars($iblocks, $propertiesProduct, $propertiesSKU, $filename);
|
||||
$ar = $this->GetProfileSetupVars($iblocks, $articleProperties, $filename);
|
||||
$PROFILE_ID = CCatalogExport::Add(array(
|
||||
"LAST_USE" => false,
|
||||
"FILE_NAME" => $this->INTARO_CRM_EXPORT,
|
||||
"NAME" => $profileName,
|
||||
"DEFAULT_PROFILE" => "N",
|
||||
"IN_MENU" => "N",
|
||||
"IN_AGENT" => "N",
|
||||
"IN_CRON" => "N",
|
||||
"NEED_EDIT" => "N",
|
||||
"SETUP_VARS" => $ar
|
||||
));
|
||||
"LAST_USE" => false,
|
||||
"FILE_NAME" => $this->INTARO_CRM_EXPORT,
|
||||
"NAME" => $profileName,
|
||||
"DEFAULT_PROFILE" => "N",
|
||||
"IN_MENU" => "N",
|
||||
"IN_AGENT" => "N",
|
||||
"IN_CRON" => "N",
|
||||
"NEED_EDIT" => "N",
|
||||
"SETUP_VARS" => $ar
|
||||
));
|
||||
if (intval($PROFILE_ID) <= 0) {
|
||||
$arResult['errCode'] = 'ERR_IBLOCK';
|
||||
return;
|
||||
@ -1090,26 +1075,22 @@ class intaro_intarocrm extends CModule {
|
||||
unlink($_SERVER['DOCUMENT_ROOT'] . '/bitrix/php_interface/include/catalog_export/intarocrm_setup.php');
|
||||
}
|
||||
|
||||
function GetProfileSetupVars($iblocks, $propertiesProduct, $propertiesSKU, $filename) {
|
||||
function GetProfileSetupVars($iblocks, $articleProperties, $filename) {
|
||||
// Get string like IBLOCK_EXPORT[0]=3&
|
||||
// IBLOCK_EXPORT[1]=6&
|
||||
// IBLOCK_PROPERTY_ARTICLE[0]=ARTICLE&
|
||||
// IBLOCK_PROPERTY_ARTICLE[1]=ARTNUMBER&
|
||||
// SETUP_FILE_NAME=%2Fbitrix%2Fcatalog_export%2Ftestintarocrm.xml
|
||||
|
||||
//$arProfileFields = explode(",", $SETUP_FIELDS_LIST);
|
||||
$strVars = "";
|
||||
foreach ($iblocks as $key => $val)
|
||||
$strVars .= 'IBLOCK_EXPORT[' . $key . ']=' . $val . '&';
|
||||
foreach ($propertiesSKU as $iblock => $arr)
|
||||
foreach ($arr as $id => $val)
|
||||
$strVars .= 'IBLOCK_PROPERTY_SKU_' . $id . '[' . $iblock . ']=' . $val . '&';
|
||||
foreach ($propertiesProduct as $iblock => $arr)
|
||||
foreach ($arr as $id => $val)
|
||||
$strVars .= 'IBLOCK_PROPERTY_PRODUCT_' . $id . '[' . $iblock . ']=' . $val . '&';
|
||||
foreach ($articleProperties as $key => $val)
|
||||
$strVars .= 'IBLOCK_PROPERTY_ARTICLE[' . $key . ']=' . $val . '&';
|
||||
|
||||
$strVars .= 'SETUP_FILE_NAME=' . urlencode($filename);
|
||||
|
||||
return $strVars;
|
||||
}
|
||||
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
<?php
|
||||
IncludeModuleLangFile(__FILE__);
|
||||
|
||||
if(isset($arResult['errCode']) && $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.intarocrm">
|
||||
<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 align="center">
|
||||
<td colspan="2"><b><?php echo GetMessage('INFO_1'); ?></b></td>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td colspan="2"><b><?php echo GetMessage('INFO_2'); ?></b></td>
|
||||
</tr>
|
||||
<!--<tr align="center">
|
||||
<td colspan="2"><b><?php echo GetMessage('INFO_3'); ?></b></td>
|
||||
</tr>-->
|
||||
<tr align="center">
|
||||
<td colspan="2"> </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=""></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=""></td>
|
||||
</tr>
|
||||
<!--<tr>
|
||||
<td width="50%" class="adm-detail-content-cell-l"><?php echo GetMessage('ICRM_SITES'); ?></td>
|
||||
<td width="50%" class="adm-detail-content-cell-r">
|
||||
<select id="sites_ids" name="sites_ids[]" multiple="multiple" size="3">
|
||||
<?php foreach ($arResult['arSites'] as $site): ?>
|
||||
<option value="<?php echo $site['LID'] ?>" selected="selected"><?php echo $site['NAME'] . ' (' . $site['LID'] . ')' ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>-->
|
||||
</tbody>
|
||||
</table>
|
||||
<br />
|
||||
<div style="padding: 1px 13px 2px; height:28px;">
|
||||
<div align="right" style="float:right; position:relative;">
|
||||
<input type="submit" name="inst" value="<?php echo GetMessage("MOD_NEXT_STEP"); ?>" class="adm-btn-save">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
@ -1,260 +0,0 @@
|
||||
<?php
|
||||
IncludeModuleLangFile(__FILE__);
|
||||
|
||||
$MODULE_ID = 'intaro.intarocrm';
|
||||
$CRM_API_HOST_OPTION = 'api_host';
|
||||
$api_host = COption::GetOptionString($MODULE_ID, $CRM_API_HOST_OPTION, 0);
|
||||
|
||||
//bitrix pyament Y/N
|
||||
$arResult['bitrixPaymentList'][0]['NAME'] = GetMessage('PAYMENT_Y');
|
||||
$arResult['bitrixPaymentList'][0]['ID'] = 'Y';
|
||||
$arResult['bitrixPaymentList'][1]['NAME'] = GetMessage('PAYMENT_N');
|
||||
$arResult['bitrixPaymentList'][1]['ID'] = 'N';
|
||||
|
||||
$defaultOrderTypes = array (
|
||||
1 => 'eshop-individual',
|
||||
2 => 'eshop-legal'
|
||||
);
|
||||
|
||||
$defaultDelivTypes = array (
|
||||
1 => 'courier',
|
||||
2 => 'self-delivery'
|
||||
);
|
||||
|
||||
$defaultPayTypes = array (
|
||||
1 => 'cash',
|
||||
5 => 'bank-transfer',
|
||||
6 => 'bank-transfer'
|
||||
);
|
||||
|
||||
$defaultPayStatuses = array (
|
||||
'N' => 'new',
|
||||
'P' => 'approval',
|
||||
'F' => 'complete',
|
||||
'Y' => 'cancel-other'
|
||||
);
|
||||
|
||||
$defaultPayment = array(
|
||||
'Y' => 'paid',
|
||||
'N' => 'not-paid'
|
||||
);
|
||||
|
||||
?>
|
||||
|
||||
<style type="text/css">
|
||||
input[name="update"] {
|
||||
right:2px;
|
||||
position: absolute !important;
|
||||
top:3px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="/bitrix/js/main/jquery/jquery-1.7.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('input[name="update"]').live('click', function() {
|
||||
$('input[name="step"]').val(2);
|
||||
BX.showWait();
|
||||
var updButton = this;
|
||||
// hide next step button
|
||||
$(updButton).css('opacity', '0.5').attr('disabled', 'disabled');
|
||||
|
||||
var handlerUrl = $(this).parents('form').attr('action');
|
||||
var data = $(this).parents('form').serialize() + '&ajax=1';
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: handlerUrl,
|
||||
data: data,
|
||||
dataType: 'json',
|
||||
success: function(response) {
|
||||
if(response.success) {
|
||||
$.each(response.result, function(i,item){
|
||||
$('select[name="' + i + '"]').replaceWith(item);
|
||||
});
|
||||
}
|
||||
|
||||
BX.closeWait();
|
||||
$(updButton).css('opacity', '1').removeAttr('disabled');
|
||||
$('input[name="step"]').val(3);
|
||||
|
||||
if(!response.success)
|
||||
alert('<?php echo GetMessage('MESS_5'); ?>');
|
||||
},
|
||||
error: function () {
|
||||
BX.closeWait();
|
||||
$(updButton).css('opacity', '1').removeAttr('disabled');
|
||||
$('input[name="step"]').val(3);
|
||||
|
||||
alert('<?php echo GetMessage('MESS_5'); ?>');
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
$('input[name="delivery-types-export"]').click(function() {
|
||||
if($(this).val() === 'true')
|
||||
$('tr.delivery-types').hide('slow');
|
||||
else if($(this).val() === 'false')
|
||||
$('tr.delivery-types').show('show');
|
||||
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<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.intarocrm">
|
||||
<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" style="position:relative;">
|
||||
<b><?php echo GetMessage('STEP_NAME'); ?></b>
|
||||
<input type="submit" name="update" value="<?php echo GetMessage('UPDATE_CATS'); ?>" class="adm-btn-save">
|
||||
</td>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td colspan="2"><b><?php echo GetMessage('INFO_1'); ?></b></td>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td colspan="2"><?php echo GetMessage('INFO_2') . " " . "<a href='". $api_host ."/admin/statuses' target=_blank>" . GetMessage('URL_1') . "</a>" . " " . 'IntaroCRM.'; ?></td>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td colspan="2"><?php echo GetMessage('INFO_3'); ?></td>
|
||||
</tr>
|
||||
<tr class="heading">
|
||||
<td colspan="2"><b><?php echo GetMessage('DELIVERY_TYPES_LIST'); ?></b></td>
|
||||
</tr>
|
||||
<tr class="heading">
|
||||
<td width="50%" class="adm-detail-content-cell-l">
|
||||
<label><input type="radio" name="delivery-types-export" value="true" checked> <?php echo GetMessage('DELIV_TYPES_EXPORT'); ?></label>
|
||||
</td>
|
||||
<td width="50%" class="adm-detail-content-cell-r">
|
||||
<label><input type="radio" name="delivery-types-export" value="false"> <?php echo GetMessage('DELIV_TYPES_EXPORT_F'); ?></label>
|
||||
</td>
|
||||
</tr>
|
||||
<?php foreach($arResult['bitrixDeliveryTypesList'] as $bitrixDeliveryType): ?>
|
||||
<tr class="delivery-types" style="display: none;">
|
||||
<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($defaultDelivTypes[$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=""></option>
|
||||
<?php foreach($arResult['paymentTypesList'] as $paymentType): ?>
|
||||
<option value="<?php echo $paymentType['code']; ?>"
|
||||
<?php if($defaultPayTypes[$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['paymentGroupList'] as $orderStatusGroup): if(!empty($orderStatusGroup['statuses'])) : ?>
|
||||
<optgroup label="<?php echo $APPLICATION->ConvertCharset($orderStatusGroup['name'], 'utf-8', SITE_CHARSET); ?>">
|
||||
<?php foreach($orderStatusGroup['statuses'] as $payment): ?>
|
||||
<option value="<?php echo $arResult['paymentList'][$payment]['code']; ?>"
|
||||
<?php if ($defaultPayStatuses[$bitrixPaymentStatus['ID']] == $arResult['paymentList'][$payment]['code']) echo 'selected'; ?>>
|
||||
<?php echo $APPLICATION->ConvertCharset($arResult['paymentList'][$payment]['name'], 'utf-8', SITE_CHARSET); ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</optgroup>
|
||||
<?php endif; endforeach; ?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<tr class="heading">
|
||||
<td colspan="2"><b><?php echo GetMessage('PAYMENT_LIST'); ?></b></td>
|
||||
</tr>
|
||||
<?php foreach($arResult['bitrixPaymentList'] as $bitrixPayment): ?>
|
||||
<tr>
|
||||
<td width="50%" class="adm-detail-content-cell-l" name="<?php echo $bitrixPayment['ID']; ?>">
|
||||
<?php echo $bitrixPayment['NAME']; ?>
|
||||
</td>
|
||||
<td width="50%" class="adm-detail-content-cell-r">
|
||||
<select name="payment-<?php echo $bitrixPayment['ID']; ?>" class="typeselect">
|
||||
<option value=""></option>
|
||||
<?php foreach($arResult['paymentStatusesList'] as $paymentStatus): ?>
|
||||
<option value="<?php echo $paymentStatus['code']; ?>"
|
||||
<?php if($defaultPayment[$bitrixPayment['ID']] == $paymentStatus['code']) echo 'selected'; ?>>
|
||||
<?php echo $APPLICATION->ConvertCharset($paymentStatus['name'], 'utf-8', SITE_CHARSET); ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<tr class="heading">
|
||||
<td colspan="2"><b><?php echo GetMessage('ORDER_TYPES_LIST'); ?></b></td>
|
||||
</tr>
|
||||
<?php foreach($arResult['bitrixOrderTypesList'] as $bitrixOrderType): ?>
|
||||
<tr>
|
||||
<td width="50%" class="adm-detail-content-cell-l" name="<?php echo $bitrixOrderType['ID']; ?>">
|
||||
<?php echo $bitrixOrderType['NAME']; ?>
|
||||
</td>
|
||||
<td width="50%" class="adm-detail-content-cell-r">
|
||||
<select name="order-type-<?php echo $bitrixOrderType['ID']; ?>" class="typeselect">
|
||||
<option value=""></option>
|
||||
<?php foreach($arResult['orderTypesList'] as $orderType): ?>
|
||||
<option value="<?php echo $orderType['code']; ?>"
|
||||
<?php if($defaultOrderTypes[$bitrixOrderType['ID']] == $orderType['code']) echo 'selected'; ?>>
|
||||
<?php echo $APPLICATION->ConvertCharset($orderType['name'], 'utf-8', SITE_CHARSET); ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<br />
|
||||
<div style="padding: 1px 13px 2px; height:28px;">
|
||||
<div align="right" style="float:right; width:50%; position:relative;">
|
||||
<input type="submit" name="inst" value="<?php echo GetMessage("MOD_NEXT_STEP"); ?>" class="adm-btn-save">
|
||||
</div>
|
||||
<div align="left" style="float:right; width:50%; position:relative;">
|
||||
<input type="submit" name="back" value="<?php echo GetMessage("MOD_PREV_STEP"); ?>" class="adm-btn-save">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
@ -1,103 +0,0 @@
|
||||
<?php
|
||||
if (!check_bitrix_sessid())
|
||||
return;
|
||||
IncludeModuleLangFile(__FILE__);
|
||||
|
||||
$defaultOrderProps = array(
|
||||
1 => array(
|
||||
'fio' => 'FIO',
|
||||
'index' => 'ZIP',
|
||||
'text' => 'ADDRESS',
|
||||
'phone' => 'PHONE',
|
||||
'email' => 'EMAIL'
|
||||
),
|
||||
2 => array(
|
||||
'fio' => 'FIO',
|
||||
'index' => 'ZIP',
|
||||
'text' => 'ADDRESS',
|
||||
'phone' => 'PHONE',
|
||||
'email' => 'EMAIL'
|
||||
)
|
||||
);
|
||||
|
||||
?>
|
||||
<script type="text/javascript" src="/bitrix/js/main/jquery/jquery-1.7.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('input.addr').change(function(){
|
||||
splitName = $(this).attr('name').split('-');
|
||||
orderType = splitName[2];
|
||||
|
||||
if(parseInt($(this).val()) === 1)
|
||||
$('tr.address-detail-' + orderType).show('slow');
|
||||
else if(parseInt($(this).val()) === 0)
|
||||
$('tr.address-detail-' + orderType).hide('slow');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<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.intarocrm">
|
||||
<input type="hidden" name="install" value="Y">
|
||||
<input type="hidden" name="step" value="4">
|
||||
<input type="hidden" name="continue" 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('ORDER_PROPS'); ?></b></td>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<td colspan="2"><b><?php echo GetMessage('INFO_2'); ?></b></td>
|
||||
</tr>
|
||||
<?php foreach($arResult['bitrixOrderTypesList'] as $bitrixOrderType): ?>
|
||||
<tr class="heading">
|
||||
<td colspan="2"><b><?php echo GetMessage('ORDER_TYPE_INFO') . ' ' . $bitrixOrderType['NAME']; ?></b></td>
|
||||
</tr>
|
||||
<?php $countProps = 0; foreach($arResult['orderProps'] as $orderProp): ?>
|
||||
<?php if($orderProp['ID'] == 'text'): ?>
|
||||
<tr class="heading">
|
||||
<td colspan="2" style="background-color: transparent;">
|
||||
<b>
|
||||
<label><input class="addr" type="radio" name="address-detail-<?php echo $bitrixOrderType['ID'];; ?>" value="0" <?php if(count($defaultOrderProps[$bitrixOrderType['ID']]) < 6) echo "checked"; ?>><?php echo GetMessage('ADDRESS_SHORT'); ?></label>
|
||||
<label><input class="addr" type="radio" name="address-detail-<?php echo $bitrixOrderType['ID']; ?>" value="1" <?php if(count($defaultOrderProps[$bitrixOrderType['ID']]) > 5) echo "checked"; ?>><?php echo GetMessage('ADDRESS_FULL'); ?></label>
|
||||
</b>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
<tr <?php if ($countProps > 4) echo 'class="address-detail-' . $bitrixOrderType['ID'] . '"'; if(($countProps > 4) && (count($defaultOrderProps[$bitrixOrderType['ID']]) < 6)) echo 'style="display:none;"';?>>
|
||||
<td width="50%" class="adm-detail-content-cell-l" name="<?php echo $orderProp['ID']; ?>">
|
||||
<?php echo $APPLICATION->ConvertCharset($orderProp['NAME'], 'utf-8', SITE_CHARSET);; ?>
|
||||
</td>
|
||||
<td width="50%" class="adm-detail-content-cell-r">
|
||||
<select name="order-prop-<?php echo $orderProp['ID'] . '-' . $bitrixOrderType['ID']; ?>" class="typeselect">
|
||||
<option value=""></option>
|
||||
<?php foreach ($arResult['arProp'][$bitrixOrderType['ID']] as $arProp): ?>
|
||||
<option value="<?php echo $arProp['CODE']; ?>" <?php if ($defaultOrderProps[$bitrixOrderType['ID']][$orderProp['ID']] == $arProp['CODE']) echo 'selected'; ?>>
|
||||
<?php echo $APPLICATION->ConvertCharset($arProp['NAME'], 'utf-8', SITE_CHARSET); ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<?php $countProps++; endforeach; ?>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<br />
|
||||
<div style="padding: 1px 13px 2px; height:28px;">
|
||||
<div align="right" style="float:right; width:50%; position:relative;">
|
||||
<input type="submit" name="inst" value="<?php echo GetMessage("MOD_NEXT_STEP"); ?>" class="adm-btn-save">
|
||||
</div>
|
||||
<div align="left" style="float:right; width:50%; position:relative; visible: none;">
|
||||
<input type="submit" name="start" value="<?php echo GetMessage("MOD_PREV_STEP"); ?>" class="adm-btn-save">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
@ -1,203 +0,0 @@
|
||||
<?php
|
||||
if (!check_bitrix_sessid())
|
||||
return;
|
||||
IncludeModuleLangFile(__FILE__);
|
||||
?>
|
||||
|
||||
<style type="text/css">
|
||||
.instal-load-block { /* */ }
|
||||
|
||||
.instal-load-label {
|
||||
color: #000;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.instal-progress-bar-outer {
|
||||
height: 32px;
|
||||
border:1px solid;
|
||||
border-color:#9ba6a8 #b1bbbe #bbc5c9 #b1bbbe;
|
||||
-webkit-box-shadow: 1px 1px 0 #fff, inset 0 2px 2px #c0cbce;
|
||||
box-shadow: 1px 1px 0 #fff, inset 0 2px 2px #c0cbce;
|
||||
background-color:#cdd8da;
|
||||
background-image:-webkit-linear-gradient(top, #cdd8da, #c3ced1);
|
||||
background-image:-moz-linear-gradient(top, #cdd8da, #c3ced1);
|
||||
background-image:-ms-linear-gradient(top, #cdd8da, #c3ced1);
|
||||
background-image:-o-linear-gradient(top, #cdd8da, #c3ced1);
|
||||
background-image:linear-gradient(top, #ced9db, #c3ced1);
|
||||
border-radius: 2px;
|
||||
text-align: center;
|
||||
color: #6a808e;
|
||||
text-shadow: 0 1px rgba(255,255,255,0.85);
|
||||
font-size: 18px;
|
||||
line-height: 35px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.instal-progress-bar-alignment {
|
||||
height: 28px;
|
||||
margin: 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.instal-progress-bar-inner {
|
||||
height: 28px;
|
||||
border-radius: 2px;
|
||||
border-top: solid 1px #52b9df;
|
||||
background-color:#2396ce;
|
||||
background-image:-webkit-linear-gradient(top, #27a8d7, #2396ce, #1c79c0);
|
||||
background-image:-moz-linear-gradient(top, #27a8d7, #2396ce, #1c79c0);
|
||||
background-image:-ms-linear-gradient(top, #27a8d7, #2396ce, #1c79c0);
|
||||
background-image:-o-linear-gradient(top, #27a8d7, #2396ce, #1c79c0);
|
||||
background-image:linear-gradient(top, #27a8d7, #2396ce, #1c79c0);
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
top: 1px;
|
||||
left:0;
|
||||
}
|
||||
|
||||
.instal-progress-bar-inner-text {
|
||||
color: #fff;
|
||||
text-shadow: 0 1px rgba(0,0,0,0.2);
|
||||
font-size: 18px;
|
||||
line-height: 32px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
left: -2px;
|
||||
top: -2px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="/bitrix/js/main/jquery/jquery-1.7.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
var globStop = false;
|
||||
|
||||
$('#percent').width($('.instal-progress-bar-outer').width());
|
||||
|
||||
$(window).resize(function(){ // strechin progress bar
|
||||
$('#percent').width($('.instal-progress-bar-outer').width());
|
||||
});
|
||||
|
||||
// orderUpload function
|
||||
function orderUpload(finish) {
|
||||
if(globStop)
|
||||
return false;
|
||||
|
||||
if(finish == 1) {
|
||||
$('#status').text('<?php echo GetMessage("MESS_3"); ?>');
|
||||
BX.closeWait();
|
||||
$('input[name="inst"]').css('opacity', '1').removeAttr('disabled');
|
||||
$('input[name="stop"]').css('opacity', '0.5').attr('disabled', 'disabled');
|
||||
$('input[name="stop"]').attr('value', '<?php echo GetMessage("START_1"); ?>');
|
||||
return true; // exit from function, end recursion
|
||||
}
|
||||
|
||||
var handlerUrl = $(this).parents('form').attr('action');
|
||||
var step = $('input[name="continue"]').val();
|
||||
var id = $('input[name="id"]').val();
|
||||
var install = $('input[name="install"]').val();
|
||||
var sessid = BX.bitrix_sessid();
|
||||
|
||||
var data = 'install=' + install +'&step=' + step + '&sessid=' + sessid +
|
||||
'&id=' + id + '&ajax=1&finish=' + finish;
|
||||
|
||||
// ajax request
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: handlerUrl,
|
||||
data: data,
|
||||
dataType: 'json',
|
||||
success: function(response) {
|
||||
$('#indicator').css('width', response.percent + '%');
|
||||
$('#percent').html(response.percent + '%');
|
||||
$('#percent2').html(response.percent + '%');
|
||||
|
||||
orderUpload(response.finish); // wait until next response
|
||||
|
||||
},
|
||||
error: function () {
|
||||
BX.closeWait();
|
||||
$('input[name="inst"]').css('opacity', '1').removeAttr('disabled');
|
||||
$('input[name="stop"]').attr('name', 'start');
|
||||
$('input[name="stop"]').attr('value', '<?php echo GetMessage("START_3"); ?>');
|
||||
$('#status').text('<?php echo GetMessage('MESS_4'); ?>');
|
||||
globStop = true;
|
||||
|
||||
alert('<?php echo GetMessage('MESS_5'); ?>');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$('input[name="start"]').live('click', function() {
|
||||
BX.showWait();
|
||||
|
||||
$(this).attr('name', 'stop');
|
||||
$(this).attr('value', '<?php echo GetMessage("START_2"); ?>');
|
||||
$('#status').text('<?php echo GetMessage('MESS_2'); ?>');
|
||||
|
||||
if(globStop)
|
||||
globStop = false;
|
||||
|
||||
// hide next step button
|
||||
$('input[name="inst"]').css('opacity', '0.5').attr('disabled', 'disabled');
|
||||
|
||||
orderUpload(0);
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
$('input[name="stop"]').live('click', function() {
|
||||
BX.closeWait();
|
||||
|
||||
// show next step button
|
||||
$('input[name="inst"]').css('opacity', '1').removeAttr('disabled');
|
||||
|
||||
$(this).attr('name', 'start');
|
||||
$(this).attr('value', '<?php echo GetMessage("START_3"); ?>');
|
||||
$('#status').text('<?php echo GetMessage('MESS_4'); ?>');
|
||||
globStop = true;
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<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.intarocrm">
|
||||
<input type="hidden" name="install" value="Y">
|
||||
<input type="hidden" name="step" value="5">
|
||||
<input type="hidden" name="continue" value="4">
|
||||
<div class="adm-detail-content-item-block">
|
||||
<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>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="instal-load-block" id="result">
|
||||
<div class="instal-load-label" id="status"><?php echo GetMessage('MESS_1'); ?></div>
|
||||
<div class="instal-progress-bar-outer">
|
||||
<div class="instal-progress-bar-alignment" style="width: 100%;">
|
||||
<div class="instal-progress-bar-inner" id="indicator" style="width: 0%;">
|
||||
<div class="instal-progress-bar-inner-text" style="width: 100%;" id="percent">0%</div>
|
||||
</div>
|
||||
<span id="percent2">0%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div style="padding: 1px 13px 2px; height:28px;">
|
||||
<div align="right" style="float:right; width:50%; position:relative;">
|
||||
<input type="submit" name="inst" value="<?php echo GetMessage("MOD_NEXT_STEP"); ?>" class="adm-btn-save">
|
||||
</div>
|
||||
<div align="left" style="float:right; width:50%; position:relative; visible: none;">
|
||||
<input type="submit" name="start" value="<?php echo GetMessage("START_1"); ?>" class="adm-btn-save">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
@ -1,405 +0,0 @@
|
||||
<?php
|
||||
|
||||
if(!check_bitrix_sessid()) return;
|
||||
IncludeModuleLangFile(__FILE__);
|
||||
__IncludeLang(GetLangFileName($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/intaro.intarocrm/lang/", "/icml_export_setup.php"));
|
||||
?>
|
||||
<h3><?=GetMessage("EXPORT_CATALOGS_INFO");?></h3>
|
||||
<?php
|
||||
if(isset($arResult['errCode']) && $arResult['errCode'])
|
||||
echo CAdminMessage::ShowMessage(GetMessage($arResult['errCode']));
|
||||
global $oldValues;
|
||||
if (!empty($oldValues)) {
|
||||
$IBLOCK_EXPORT = $oldValues['IBLOCK_EXPORT'];
|
||||
$IBLOCK_PROPERTY_SKU = $oldValues['IBLOCK_PROPERTY_SKU'];
|
||||
$IBLOCK_PROPERTY_PRODUCT = $oldValues['IBLOCK_PROPERTY_PRODUCT'];
|
||||
$SETUP_FILE_NAME = $oldValues['SETUP_FILE_NAME'];
|
||||
$SETUP_PROFILE_NAME = $oldValues['SETUP_PROFILE_NAME'];
|
||||
}
|
||||
?>
|
||||
|
||||
|
||||
<style type="text/css">
|
||||
.iblock-export-table-display-none {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
<form method="post" action="<?php echo $APPLICATION->GetCurPage(); ?>" >
|
||||
<h3><?=GetMessage("SETTINGS_INFOBLOCK");?></h3>
|
||||
<font class="text"><?=GetMessage("EXPORT_CATALOGS");?><br><br></font>
|
||||
<?
|
||||
if (!isset($IBLOCK_EXPORT) || !is_array($IBLOCK_EXPORT))
|
||||
{
|
||||
$IBLOCK_EXPORT = array();
|
||||
}
|
||||
|
||||
$iblockPropertiesName = Array(
|
||||
"article" => GetMessage("PROPERTY_ARTICLE_HEADER_NAME"),
|
||||
"manufacturer" => GetMessage("PROPERTY_MANUFACTURER_HEADER_NAME"),
|
||||
"color" => GetMessage("PROPERTY_COLOR_HEADER_NAME"),
|
||||
"weight" => GetMessage("PROPERTY_WEIGHT_HEADER_NAME"),
|
||||
"size" => GetMessage("PROPERTY_SIZE_HEADER_NAME"),
|
||||
);
|
||||
|
||||
$iblockPropertiesHint = Array(
|
||||
"article" => Array("ARTICLE", "ART", "ARTNUMBER", "ARTICUL", "ARTIKUL"),
|
||||
"manufacturer" => Array("MANUFACTURER", "PROISVODITEL", "PROISVOD", "PROISV"),
|
||||
"color" => Array("COLOR", "CVET"),
|
||||
"weight" => Array("WEIGHT", "VES", "VEC"),
|
||||
"size" => Array("SIZE", "RAZMER"),
|
||||
);
|
||||
|
||||
|
||||
$boolAll = false;
|
||||
$intCountChecked = 0;
|
||||
$intCountAvailIBlock = 0;
|
||||
$arIBlockList = array();
|
||||
$db_res = CIBlock::GetList(Array("IBLOCK_TYPE"=>"ASC", "NAME"=>"ASC"),array('CHECK_PERMISSIONS' => 'Y','MIN_PERMISSION' => 'W'));
|
||||
while ($iblock = $db_res->Fetch())
|
||||
{
|
||||
if ($arCatalog = CCatalog::GetByIDExt($iblock["ID"]))
|
||||
{
|
||||
if($arCatalog['CATALOG_TYPE'] == "D" || $arCatalog['CATALOG_TYPE'] == "X" || $arCatalog['CATALOG_TYPE'] == "P")
|
||||
{
|
||||
$propertiesSKU = null;
|
||||
if ($arCatalog['CATALOG_TYPE'] == "X" || $arCatalog['CATALOG_TYPE'] == "P")
|
||||
{
|
||||
$iblockOffer = CCatalogSKU::GetInfoByProductIBlock($iblock["ID"]);
|
||||
|
||||
$db_properties = CIBlock::GetProperties($iblockOffer['IBLOCK_ID'], Array());
|
||||
while($prop = $db_properties->Fetch())
|
||||
$propertiesSKU[] = $prop;
|
||||
|
||||
$oldPropertySKU = null;
|
||||
if (isset($IBLOCK_PROPERTY_SKU[$iblock['ID']])) {
|
||||
foreach ($iblockPropertiesName as $key => $prop) {
|
||||
$oldPropertySKU[$key] = $IBLOCK_PROPERTY_SKU[$iblock['ID']][$key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$propertiesProduct = null;
|
||||
$db_properties = CIBlock::GetProperties($iblock['ID'], Array());
|
||||
while($prop = $db_properties->Fetch())
|
||||
$propertiesProduct[] = $prop;
|
||||
|
||||
$oldPropertyProduct = null;
|
||||
if (isset($IBLOCK_PROPERTY_PRODUCT[$iblock['ID']])) {
|
||||
foreach ($iblockPropertiesName as $key => $prop) {
|
||||
$oldPropertyProduct[$key] = $IBLOCK_PROPERTY_PRODUCT[$iblock['ID']][$key];
|
||||
}
|
||||
}
|
||||
|
||||
$arSiteList = array();
|
||||
$rsSites = CIBlock::GetSite($iblock["ID"]);
|
||||
while ($arSite = $rsSites->Fetch())
|
||||
{
|
||||
$arSiteList[] = $arSite["SITE_ID"];
|
||||
}
|
||||
|
||||
if (count($IBLOCK_EXPORT) != 0)
|
||||
$boolExport = (in_array($iblock['ID'], $IBLOCK_EXPORT));
|
||||
else
|
||||
$boolExport = true;
|
||||
|
||||
|
||||
$arIBlockList[] = array(
|
||||
'ID' => $iblock['ID'],
|
||||
'NAME' => $iblock['NAME'],
|
||||
'IBLOCK_TYPE_ID' => $iblock['IBLOCK_TYPE_ID'],
|
||||
'IBLOCK_EXPORT' => $boolExport,
|
||||
'PROPERTIES_SKU' => $propertiesSKU,
|
||||
'PROPERTIES_PRODUCT' => $propertiesProduct,
|
||||
'OLD_PROPERTY_SKU_SELECT' => $oldPropertySKU,
|
||||
'OLD_PROPERTY_PRODUCT_SELECT' => $oldPropertyProduct,
|
||||
'SITE_LIST' => '('.implode(' ',$arSiteList).')',
|
||||
);
|
||||
|
||||
if ($boolExport)
|
||||
$intCountChecked++;
|
||||
$intCountAvailIBlock++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (count($IBLOCK_EXPORT) != 0) {
|
||||
if ($intCountChecked == $intCountAvailIBlock)
|
||||
$boolAll = true;
|
||||
} else {
|
||||
$intCountChecked = $intCountAvailIBlock;
|
||||
$boolAll = true;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<font class="text" style="font-weight: bold;"><?=GetMessage("CHECK_ALL_INFOBLOCKS");?></font>
|
||||
<input
|
||||
style="vertical-align: middle;"
|
||||
type="checkbox"
|
||||
name="icml_export_all"
|
||||
id="icml_export_all"
|
||||
value="Y"
|
||||
onclick="checkAll(this,<? echo $intCountAvailIBlock; ?>);"
|
||||
<? echo ($boolAll ? ' checked' : ''); ?>>
|
||||
</br>
|
||||
</br>
|
||||
<div>
|
||||
<? $checkBoxCounter = 0;?>
|
||||
<? foreach ($arIBlockList as $key => $arIBlock):?>
|
||||
<div>
|
||||
<div>
|
||||
<font class="text" style="font-weight: bold;"><? echo htmlspecialcharsex("[".$arIBlock["IBLOCK_TYPE_ID"]."] ".$arIBlock["NAME"]." ".$arIBlock['SITE_LIST']); ?></font>
|
||||
<input
|
||||
type="checkbox"
|
||||
name="IBLOCK_EXPORT[<?=$arIBlock["ID"]?>]"
|
||||
id="IBLOCK_EXPORT<?=++$checkBoxCounter?>"
|
||||
value="<?=$arIBlock["ID"]?>"
|
||||
<? if ($arIBlock['IBLOCK_EXPORT']) echo " checked"; ?>
|
||||
onclick="checkOne(this,<? echo $intCountAvailIBlock; ?>);"
|
||||
>
|
||||
</div>
|
||||
<br>
|
||||
<div id="IBLOCK_EXPORT_TABLE<?=$checkBoxCounter?>">
|
||||
<table class="adm-list-table" id="export_setup" <?=($arIBlock['PROPERTIES_SKU'] == null ? 'style="width: 66%;"': "" )?> >
|
||||
<thead>
|
||||
<tr class="adm-list-table-header">
|
||||
<td class="adm-list-table-cell">
|
||||
<div class="adm-list-table-cell-inner"><?=GetMessage("LOADED_PROPERTY");?></div>
|
||||
</td>
|
||||
<td class="adm-list-table-cell">
|
||||
<div class="adm-list-table-cell-inner"><?=GetMessage("PROPERTY_PRODUCT_HEADER_NAME");?></div>
|
||||
</td>
|
||||
<? if ($arIBlock['PROPERTIES_SKU'] != null): ?>
|
||||
<td class="adm-list-table-cell">
|
||||
<div class="adm-list-table-cell-inner"><?=GetMessage("PROPERTY_OFFER_HEADER_NAME");?></div>
|
||||
</td>
|
||||
<? endif;?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<? foreach ($iblockPropertiesName as $key => $property): ?>
|
||||
<? $productSelected = false;?>
|
||||
<tr class="adm-list-table-row">
|
||||
<td class="adm-list-table-cell">
|
||||
<? echo htmlspecialcharsex($property); ?>
|
||||
</td>
|
||||
<td class="adm-list-table-cell">
|
||||
<select
|
||||
style="width: 200px;"
|
||||
id="IBLOCK_PROPERTY_PRODUCT_<?=$key?><?=$arIBlock["ID"]?>"
|
||||
name="IBLOCK_PROPERTY_PRODUCT_<?=$key?>[<?=$arIBlock["ID"]?>]"
|
||||
class="property-export"
|
||||
onchange="propertyChange(this);">
|
||||
<option value=""></option>
|
||||
<? foreach ($arIBlock['PROPERTIES_PRODUCT'] as $prop): ?>
|
||||
<option value="<?=$prop['CODE'] ?>"
|
||||
<?
|
||||
if ($arIBlock['OLD_PROPERTY_PRODUCT_SELECT'] != null) {
|
||||
if ($prop["CODE"] == $arIBlock['OLD_PROPERTY_PRODUCT_SELECT'][$key] ) {
|
||||
echo " selected";
|
||||
$productSelected = true;
|
||||
}
|
||||
} else {
|
||||
foreach ($iblockPropertiesHint[$key] as $hint) {
|
||||
if ($prop["CODE"] == $hint ) {
|
||||
echo " selected";
|
||||
$productSelected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
>
|
||||
<?=$prop["NAME"];?>
|
||||
</option>
|
||||
<? endforeach;?>
|
||||
</select>
|
||||
</td>
|
||||
<? if ($arIBlock['PROPERTIES_SKU'] != null): ?>
|
||||
<td class="adm-list-table-cell">
|
||||
<select
|
||||
style="width: 200px;"
|
||||
id="IBLOCK_PROPERTY_SKU_<?=$key?><?=$arIBlock["ID"]?>"
|
||||
name="IBLOCK_PROPERTY_SKU_<?=$key?>[<?=$arIBlock["ID"]?>]"
|
||||
class="property-export"
|
||||
onchange="propertyChange(this);">
|
||||
|
||||
<option value=""></option>
|
||||
<? foreach ($arIBlock['PROPERTIES_SKU'] as $prop): ?>
|
||||
<option value="<?=$prop['CODE'] ?>"
|
||||
<?
|
||||
if (!$productSelected) {
|
||||
if ($arIBlock['OLD_PROPERTY_SKU_SELECT'] != null) {
|
||||
if ($prop["CODE"] == $arIBlock['OLD_PROPERTY_SKU_SELECT'][$key] ) {
|
||||
echo " selected";
|
||||
}
|
||||
} else {
|
||||
foreach ($iblockPropertiesHint[$key] as $hint) {
|
||||
if ($prop["CODE"] == $hint ) {
|
||||
echo " selected";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
>
|
||||
<?=$prop["NAME"];?>
|
||||
</option>
|
||||
<? endforeach;?>
|
||||
</select>
|
||||
</td>
|
||||
<? endif;?>
|
||||
</tr>
|
||||
<? endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<? endforeach;?>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="count_checked" id="count_checked" value="<? echo $intCountChecked; ?>">
|
||||
<br>
|
||||
|
||||
|
||||
<font class="text"><?=GetMessage("FILENAME");?><br><br></font>
|
||||
<input type="text" name="SETUP_FILE_NAME"
|
||||
value="<?=htmlspecialcharsbx(strlen($SETUP_FILE_NAME) > 0 ?
|
||||
$SETUP_FILE_NAME :
|
||||
(COption::GetOptionString(
|
||||
'catalog',
|
||||
'export_default_path',
|
||||
'/bitrix/catalog_export/'))
|
||||
.'intarocrm'/* .mt_rand(0, 999999) */.'.xml'
|
||||
); ?>" size="50">
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<font class="text"><?=GetMessage("LOAD_PERIOD");?><br><br></font>
|
||||
<input type="radio" name="TYPE_LOADING" value="none" onclick="checkProfile(this);"><?=GetMessage("NOT_LOADING");?><Br>
|
||||
<input type="radio" name="TYPE_LOADING" value="cron" onclick="checkProfile(this);"><?=GetMessage("CRON_LOADING");?><Br>
|
||||
<input type="radio" name="TYPE_LOADING" value="agent" checked onclick="checkProfile(this);"><?=GetMessage("AGENT_LOADING");?><Br>
|
||||
<br>
|
||||
<br>
|
||||
<font class="text"><?=GetMessage("LOAD_NOW");?> </font>
|
||||
<input id="load-now" type="checkbox" name="LOAD_NOW" value="now" checked >
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div id="profile-field" >
|
||||
<font class="text"><?=GetMessage("PROFILE_NAME");?> </font>
|
||||
<input
|
||||
type="text"
|
||||
name="SETUP_PROFILE_NAME"
|
||||
value="<?= ($SETUP_PROFILE_NAME ? $SETUP_PROFILE_NAME: GetMessage("PROFILE_NAME_EXAMPLE"));?>"
|
||||
size="30">
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/bitrix/js/main/jquery/jquery-1.7.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
function checkAll(obj,cnt)
|
||||
{
|
||||
for (i = 0; i < cnt; i++)
|
||||
{
|
||||
if (obj.checked)
|
||||
BX.removeClass('IBLOCK_EXPORT_TABLE'+(i+1),"iblock-export-table-display-none");
|
||||
}
|
||||
var table = BX(obj.id.replace('IBLOCK_EXPORT','IBLOCK_EXPORT_TABLE'));
|
||||
if (obj.checked)
|
||||
BX.removeClass(table,"iblock-export-table-display-none");
|
||||
var easing = new BX.easing({
|
||||
duration : 150,
|
||||
start : {opacity : obj.checked ? 0 : 100 },
|
||||
finish : {opacity: obj.checked ? 100 : 0 },
|
||||
transition : BX.easing.transitions.linear,
|
||||
step : function(state){
|
||||
for (i = 0; i < cnt; i++)
|
||||
{
|
||||
BX('IBLOCK_EXPORT_TABLE'+(i+1)).style.opacity = state.opacity/100;
|
||||
}
|
||||
},
|
||||
complete : function() {
|
||||
for (i = 0; i < cnt; i++)
|
||||
{
|
||||
if (!obj.checked)
|
||||
BX.addClass('IBLOCK_EXPORT_TABLE'+(i+1),"iblock-export-table-display-none");
|
||||
}
|
||||
}
|
||||
});
|
||||
easing.animate();
|
||||
var boolCheck = obj.checked;
|
||||
for (i = 0; i < cnt; i++)
|
||||
{
|
||||
BX('IBLOCK_EXPORT'+(i+1)).checked = boolCheck;
|
||||
}
|
||||
BX('count_checked').value = (boolCheck ? cnt : 0);
|
||||
};
|
||||
function checkOne(obj,cnt)
|
||||
{
|
||||
var table = BX(obj.id.replace('IBLOCK_EXPORT','IBLOCK_EXPORT_TABLE'));
|
||||
if (obj.checked)
|
||||
BX.removeClass(table,"iblock-export-table-display-none");
|
||||
var easing = new BX.easing({
|
||||
duration : 150,
|
||||
start : {opacity : obj.checked ? 0 : 100 },
|
||||
finish : {opacity: obj.checked ? 100 : 0 },
|
||||
transition : BX.easing.transitions.linear,
|
||||
step : function(state){
|
||||
table.style.opacity = state.opacity/100;
|
||||
},
|
||||
complete : function() {
|
||||
if (!obj.checked)
|
||||
BX.addClass(table,"iblock-export-table-display-none");
|
||||
}
|
||||
});
|
||||
easing.animate();
|
||||
var boolCheck = obj.checked;
|
||||
var intCurrent = parseInt(BX('count_checked').value);
|
||||
intCurrent += (boolCheck ? 1 : -1);
|
||||
BX('icml_export_all').checked = (intCurrent < cnt ? false : true);
|
||||
BX('count_checked').value = intCurrent;
|
||||
};
|
||||
function propertyChange(obj)
|
||||
{
|
||||
if (BX(obj.id).value !== 'none') {
|
||||
if (obj.id.indexOf("SKU") !== -1)
|
||||
BX(obj.id.replace('SKU','PRODUCT')).value = 'none';
|
||||
else
|
||||
BX(obj.id.replace('PRODUCT','SKU')).value = 'none';
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
<?//Следующие переменные должны быть обязательно установлены?>
|
||||
<?=bitrix_sessid_post();?>
|
||||
|
||||
<input type="hidden" name="lang" value="<?php echo LANG; ?>">
|
||||
<input type="hidden" name="id" value="intaro.intarocrm">
|
||||
<input type="hidden" name="install" value="Y">
|
||||
<input type="hidden" name="step" value="6">
|
||||
<input type="hidden" name="continue" value="5">
|
||||
<div style="padding: 1px 13px 2px; height:28px;">
|
||||
<div align="right" style="float:right; width:50%; position:relative;">
|
||||
<input type="submit" name="inst" value="<?php echo GetMessage("MOD_NEXT_STEP"); ?>" class="adm-btn-save">
|
||||
</div>
|
||||
<div align="left" style="float:right; width:50%; position:relative;">
|
||||
<input type="submit" name="back" value="<?php echo GetMessage("MOD_PREV_STEP"); ?>" class="adm-btn-save">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
@ -1,11 +0,0 @@
|
||||
<?php
|
||||
if(!check_bitrix_sessid()) return;
|
||||
echo CAdminMessage::ShowNote(GetMessage("MOD_INST_OK"));
|
||||
echo GetMessage("INTAROCRM_INFO"); ?>
|
||||
|
||||
<form action="<?php echo $APPLICATION->GetCurPage(); ?>">
|
||||
<input type="hidden" name="lang" value="<?php echo LANG; ?>">
|
||||
<input type="hidden" name="id" value="intaro.intarocrm">
|
||||
<input type="hidden" name="install" value="Y">
|
||||
<input type="submit" name="" value="<?php echo GetMessage("MOD_BACK"); ?>">
|
||||
<form>
|
@ -1,8 +0,0 @@
|
||||
<?php IncludeModuleLangFile(__FILE__);
|
||||
bitrix_sessid_post();
|
||||
echo CAdminMessage::ShowNote(GetMessage("MOD_UNINST_OK")); ?>
|
||||
|
||||
<form action="<?echo $APPLICATION->GetCurPage()?>">
|
||||
<input type="hidden" name="lang" value="<?echo LANG?>">
|
||||
<input type="submit" name="" value="<?echo GetMessage("MOD_BACK")?>">
|
||||
</form>
|
@ -1,6 +0,0 @@
|
||||
<?
|
||||
$arModuleVersion = array(
|
||||
"VERSION" => "0.4.1",
|
||||
"VERSION_DATE" => "2013-09-24 18:52:00",
|
||||
);
|
||||
|
@ -1,2 +0,0 @@
|
||||
<?php
|
||||
$MESS["ROOT_CATEGORY_FOR_CATALOG"] = "Корневой раздел для каталога \"%s\"";
|
@ -1,109 +0,0 @@
|
||||
<?php
|
||||
$MESS["YANDEX_DETAIL_TITLE"] = "Настройка дополнительных параметров";
|
||||
$MESS["YANDEX_ERR_NO_ACCESS_EXPORT"] = "Нет доступа к управлению экспортом";
|
||||
$MESS["YANDEX_ERR_NO_IBLOCK_CHOSEN"] = "Не выбран инфоблок";
|
||||
$MESS["YANDEX_ERR_NO_IBLOCK_FOUND"] = "Инфоблок не найден";
|
||||
$MESS["YANDEX_ERR_NO_ACCESS_IBLOCK"] = "Нет доступа к инфоблоку";
|
||||
$MESS["YANDEX_TAB1_TITLE"] = "Настройка выгрузки";
|
||||
$MESS["YANDEX_TAB1_DESC"] = "Настройка данных и типа выгрузки";
|
||||
$MESS["YANDEX_TAB2_TITLE"] = "Валюты и цены";
|
||||
$MESS["YANDEX_TAB2_DESC"] = "Настройка списка используемых валют и типов цен";
|
||||
$MESS["YANDEX_SKIP_PROP"] = "(не выводить)";
|
||||
$MESS["YANDEX_PROP_country_of_origin"] = "Страна производства товара";
|
||||
$MESS["YANDEX_PROP_vendor"] = "Производитель";
|
||||
$MESS["YANDEX_PROP_model"] = "Модель";
|
||||
$MESS["YANDEX_PROP_vendorCode"] = "Код производителя";
|
||||
$MESS["YANDEX_PROP_manufacturer_warranty"] = "Гарантия производителя";
|
||||
$MESS["YANDEX_PROP_author"] = "Автор";
|
||||
$MESS["YANDEX_PROP_publisher"] = "Издательство";
|
||||
$MESS["YANDEX_PROP_series"] = "Серия";
|
||||
$MESS["YANDEX_PROP_year"] = "Год издания";
|
||||
$MESS["YANDEX_PROP_ISBN"] = "Код книги (ISBN)";
|
||||
$MESS["YANDEX_PROP_volume"] = "Кол-во томов";
|
||||
$MESS["YANDEX_PROP_part"] = "Номер тома";
|
||||
$MESS["YANDEX_PROP_language"] = "Язык";
|
||||
$MESS["YANDEX_PROP_binding"] = "Переплет";
|
||||
$MESS["YANDEX_PROP_page_extent"] = "Кол-во страниц";
|
||||
$MESS["YANDEX_PROP_table_of_contents"] = "Оглавление";
|
||||
$MESS["YANDEX_PROP_performed_by"] = "Исполнитель";
|
||||
$MESS["YANDEX_PROP_performance_type"] = "Тип";
|
||||
$MESS["YANDEX_PROP_format"] = "Формат аудиокниги";
|
||||
$MESS["YANDEX_PROP_storage"] = "Носитель";
|
||||
$MESS["YANDEX_PROP_recording_length"] = "Время звучания (mm.ss)";
|
||||
$MESS["YANDEX_PROP_title"] = "Наименование";
|
||||
$MESS["YANDEX_PROP_artist"] = "Исполнитель";
|
||||
$MESS["YANDEX_PROP_director"] = "Режиссер";
|
||||
$MESS["YANDEX_PROP_starring"] = "Актеры";
|
||||
$MESS["YANDEX_PROP_originalName"] = "Оригинальное наименование";
|
||||
$MESS["YANDEX_PROP_country"] = "Страна";
|
||||
$MESS["YANDEX_PROP_media"] = "Носитель";
|
||||
$MESS["YANDEX_PROP_worldRegion"] = "Часть света";
|
||||
$MESS["YANDEX_PROP_region"] = "Курорт или город";
|
||||
$MESS["YANDEX_PROP_days"] = "Количество дней тура";
|
||||
$MESS["YANDEX_PROP_dataTour"] = "Даты заездов";
|
||||
$MESS["YANDEX_PROP_hotel_stars"] = "Звезды отеля (5*****)";
|
||||
$MESS["YANDEX_PROP_room"] = "Тип комнаты (SNG, DBL...)";
|
||||
$MESS["YANDEX_PROP_meal"] = "Тип питания (All, HB...)";
|
||||
$MESS["YANDEX_PROP_included"] = "Что включено в стоимость тура";
|
||||
$MESS["YANDEX_PROP_transport"] = "Транспорт";
|
||||
$MESS["YANDEX_PROP_place"] = "Место";
|
||||
$MESS["YANDEX_PROP_hall"] = "Зал";
|
||||
$MESS["YANDEX_PROP_date"] = "Дата и время";
|
||||
$MESS["YANDEX_PROP_is_premiere"] = "Премьера?";
|
||||
$MESS["YANDEX_PROP_is_kids"] = "Детское?";
|
||||
$MESS["YANDEX_TYPE"] = "Тип описания";
|
||||
$MESS["YANDEX_TYPE_SIMPLE"] = "упрощенное";
|
||||
$MESS["YANDEX_TYPE_NOTE"] = "Подробнее см. <a href=\"http://partner.market.yandex.ru/legal/tt/\" target=\"_blank\">http://partner.market.yandex.ru/legal/tt/</a>";
|
||||
$MESS["YANDEX_PROPS_COMMON"] = "Общие настройки";
|
||||
$MESS["YANDEX_PROPS_TYPE"] = "Настройки типа описания";
|
||||
$MESS["YANDEX_PROPS_NO"] = "нет";
|
||||
$MESS["YANDEX_PROPS_ADDITIONAL"] = "Дополнительные свойства для выгрузки";
|
||||
$MESS["YANDEX_PROPS_ADDITIONAL_TITLE"] = "Выберите свойства";
|
||||
$MESS["YANDEX_PROPS_ADDITIONAL_MORE"] = "Еще";
|
||||
$MESS["YANDEX_PRICES"] = "Цены";
|
||||
$MESS["YANDEX_PRICE_TYPE"] = "Выводить цену";
|
||||
$MESS["YANDEX_PRICE_TYPE_NONE"] = "оптимальную";
|
||||
$MESS["YANDEX_CURRENCIES"] = "Валюты";
|
||||
$MESS["YANDEX_CURRENCY"] = "валюта";
|
||||
$MESS["YANDEX_CURRENCY_RATE"] = "курс";
|
||||
$MESS["YANDEX_CURRENCY_RATE_SITE"] = "сайт";
|
||||
$MESS["YANDEX_CURRENCY_RATE_CBRF"] = "Центральный банк РФ";
|
||||
$MESS["YANDEX_CURRENCY_RATE_NBU"] = "Национальный банк Украины";
|
||||
$MESS["YANDEX_CURRENCY_RATE_NBK"] = "Национальный банк Казахстана";
|
||||
$MESS["YANDEX_CURRENCY_RATE_CB"] = "банк своего региона";
|
||||
$MESS["YANDEX_CURRENCY_PLUS"] = "коррекция курса";
|
||||
$MESS["YANDEX_PARAMS_TITLE"] = "Свойство";
|
||||
$MESS["YANDEX_ERR_NO_ACCESS_IBLOCK_SKU"] = "Нет доступа к инфоблоку торговых предложений";
|
||||
$MESS["YANDEX_ERR_NO_IBLOCK_SKU_FOUND"] = "Инфоблок торговых предложений #ID# не найден";
|
||||
$MESS["YANDEX_ERR_NO_IBLOCK_FOUND_EXT"] = "Инфоблок #ID# не найден";
|
||||
$MESS["YANDEX_ERR_NO_IBLOCK_IS_CATALOG"] = "Инфоблок #ID# не является торговым каталогом и не имеет торговых предложений";
|
||||
$MESS["YANDEX_ERR_NO_SECTION_LIST"] = "Список разделов не задан";
|
||||
$MESS["YANDEX_ERR_FILE_ACCESS_DENIED"] = "Недостаточно прав для перезаписи файла #FILE#";
|
||||
$MESS["YANDEX_ERR_FILE_OPEN_WRITING"] = "Невозможно открыть файл #FILE# для записи";
|
||||
$MESS["YANDEX_ERR_SETUP_FILE_WRITE"] = "Запись в файл #FILE# невозможна";
|
||||
$MESS["YANDEX_PRODUCT_PROPS"] = "--- Инфоблок товаров ---";
|
||||
$MESS["YANDEX_OFFERS_PROPS"] = "--- Инфоблок торговых предложений ---";
|
||||
$MESS["YANDEX_SKU_SETTINGS"] = "Выгрузка торговых предложений";
|
||||
$MESS["YANDEX_OFFERS_SELECT"] = "Условие отбора";
|
||||
$MESS["YANDEX_SKU_EXPORT_ALL_TITLE"] = "Все предложения товара";
|
||||
$MESS["YANDEX_SKU_EXPORT_MIN_PRICE_TITLE"] = "Предложение с минимальной ценой";
|
||||
$MESS["YANDEX_SKU_EXPORT_PROP_TITLE"] = "Отбор по свойству";
|
||||
$MESS["YANDEX_SKU_EXPORT_PROP_ID"] = "Свойство";
|
||||
$MESS["YANDEX_SKU_EXPORT_PROP_COND"] = "Условие отбора";
|
||||
$MESS["YANDEX_SKU_EXPORT_PROP_VALUE"] = "Значения";
|
||||
$MESS["YANDEX_SKU_EXPORT_PROP_EMPTY"] = "--- выберите свойство ---";
|
||||
$MESS["YANDEX_SKU_EXPORT_PROP_SELECT_ZERO"] = "пусто";
|
||||
$MESS["YANDEX_SKU_EXPORT_PROP_SELECT_NONZERO"] = "не пусто";
|
||||
$MESS["YANDEX_SKU_EXPORT_PROP_SELECT_EQUAL"] = "равно";
|
||||
$MESS["YANDEX_SKU_EXPORT_PROP_SELECT_NONEQUAL"] = "не равно";
|
||||
$MESS["YANDEX_SKU_EXPORT_ERR_CONDITION_ABSENT"] = "Не указано, по какому принципу фильтровать экспортируемые торговые предложения";
|
||||
$MESS["YANDEX_SKU_EXPORT_ERR_PROPERTY_ABSENT"] = "Не указано свойство, по значению которого фильтруются торговые предложения";
|
||||
$MESS["YANDEX_SKU_EXPORT_ERR_PROPERTY_COND_ABSENT"] = "Не указано условие фильтрации торговых предложений по свойству";
|
||||
$MESS["YANDEX_SKU_EXPORT_ERR_PROPERTY_VALUES_ABSENT"] = "Не указаны значения свойств для фильтрации торговых предложений";
|
||||
$MESS["YANDEX_SAVE_ERR"] = "Ошибки сохранения";
|
||||
$MESS["YANDEX_ERR_BAD_PRICE_TYPE"] = "Задан неверный тип цен для выгрузки";
|
||||
$MESS["YANDEX_ERR_BAD_OFFERS_IBLOCK_ID"] = "Неверный ID инфоблока торговых предложений";
|
||||
$MESS["YANDEX_ERR_SKU_SETTINGS_ABSENT"] = "Отсутствуют настройки экспорта торговых предложений";
|
||||
$MESS["YANDEX_ROOT_DIRECTORY"] = "Основной раздел каталога";
|
||||
$MESS["CET_ERROR_IBLOCK_PERM"] = "Недостаточно прав для работы с инфоблоком ##IBLOCK_ID#";
|
||||
$MESS["CES_ERROR_BAD_EXPORT_FILENAME"] = "Имя файла экспорта содержит запрещенные символы";
|
@ -1,124 +0,0 @@
|
||||
<?php
|
||||
$MESS["CET_ERROR_NO_NAME"] = "Введите название профиля выгрузки.";
|
||||
$MESS["CET_STEP1"] = "Шаг";
|
||||
$MESS["CET_STEP2"] = "из";
|
||||
$MESS["CET_SAVE"] = "Сохранить";
|
||||
$MESS["CET_ERROR_NO_IBLOCK1"] = "Информационный блок";
|
||||
$MESS["CET_ERROR_NO_IBLOCK2"] = "не найден.";
|
||||
$MESS["CET_ERROR_NO_FILENAME"] = "Не указано имя файла для экспорта.";
|
||||
$MESS["CET_ERROR_NO_GROUPS"] = "Не указаны выгружаемые группы.";
|
||||
$MESS["CET_ERROR_NO_PROFILE_NAME"] = "Введите название профиля выгрузки.";
|
||||
$MESS["CET_SELECT_IBLOCK"] = "Выберите инфоблок";
|
||||
$MESS["CET_SELECT_IBLOCK_EXT"] = "Выберите инфоблок для экспорта:";
|
||||
$MESS["CET_SELECT_GROUP"] = "Выберите группы:";
|
||||
$MESS["CET_FIRST_SELECT_IBLOCK"] = "Сначала выберите информационный блок";
|
||||
$MESS["CET_ALL_GROUPS"] = "Все группы";
|
||||
$MESS["CET_SERVER_NAME"] = "Доменное имя:";
|
||||
$MESS["CET_SERVER_NAME_SET_CURRENT"] = "текущее";
|
||||
$MESS["CET_SAVE_FILENAME"] = "Сохранить в файл:";
|
||||
$MESS["CET_PROFILE_NAME"] = "Имя профиля:";
|
||||
$MESS["CET_EXPORT"] = "Экспортировать";
|
||||
$MESS["CET_ERROR_NO_IBLOCKS"] = "Не указаны выгружаемые информационные блоки.";
|
||||
$MESS["CET_EXPORT_CATALOGS"] = "Каталоги для экспорта:";
|
||||
$MESS["CET_CATALOG"] = "Каталог";
|
||||
$MESS["CET_EXPORT2YANDEX"] = "Экспортировать в Яндекс.Товары";
|
||||
$MESS["CATI_DATA_EXPORT"] = "Экспорт данных";
|
||||
$MESS["CATI_NO_IBLOCK"] = "Информационный блок не выбран. Выгрузка невозможна.";
|
||||
$MESS["CATI_NO_FORMAT"] = "Укажите формат файла данных и его свойства.";
|
||||
$MESS["CATI_NO_DELIMITER"] = "Укажите символ-разделитель полей.";
|
||||
$MESS["CATI_NO_SAVE_FILE"] = "Укажите файл для сохранения результата.";
|
||||
$MESS["CATI_CANNOT_CREATE_FILE"] = "Ошибка создания файла данных.";
|
||||
$MESS["CATI_NO_FIELDS"] = "Не заданы поля для экспорта.";
|
||||
$MESS["CATI_SCHEME_EXISTS"] = "Схема с таким именем уже существует.";
|
||||
$MESS["CATI_PAGE_TITLE"] = "Выгрузка каталога: шаг";
|
||||
$MESS["CATI_NEXT_STEP"] = "Далее";
|
||||
$MESS["CATI_INFOBLOCK"] = "Информационный блок для экспорта:";
|
||||
$MESS["CATI_SCHEME_NAME"] = "Схема выгрузки:";
|
||||
$MESS["CATI_NOT"] = "Нет";
|
||||
$MESS["CATI_DELETE"] = "удалить";
|
||||
$MESS["CATI_FIELDS"] = "Задайте соответствие полей в файле полям в базе";
|
||||
$MESS["CATI_FI_ID"] = "Идентификатор";
|
||||
$MESS["CATI_FI_NAME"] = "Название";
|
||||
$MESS["CATI_FI_ACTIV"] = "Активность";
|
||||
$MESS["CATI_FI_ACTIVFROM"] = "Активность с";
|
||||
$MESS["CATI_FI_ACTIVTO"] = "Активность до";
|
||||
$MESS["CATI_FI_CATIMG"] = "Картинка для списка";
|
||||
$MESS["CATI_FI_CATDESCR"] = "Описание для списка";
|
||||
$MESS["CATI_FI_DETIMG"] = "Картинка";
|
||||
$MESS["CATI_FI_DETDESCR"] = "Описание";
|
||||
$MESS["CATI_FI_UNIXML"] = "Уникальный идентификатор";
|
||||
$MESS["CATI_FI_QUANT"] = "Количество";
|
||||
$MESS["CATI_FI_WEIGHT"] = "Вес";
|
||||
$MESS["CATI_FI_PROPS"] = "Свойство";
|
||||
$MESS["CATI_FI_GROUP_LEV"] = "Группа уровня";
|
||||
$MESS["CATI_FI_PRICE_TYPE"] = "Цена типа";
|
||||
$MESS["CATI_FIELD"] = "поле";
|
||||
$MESS["CATI_FORMAT_PROPS"] = "Задайте свойства формата файла";
|
||||
$MESS["CATI_DELIMITERS"] = "С разделителями";
|
||||
$MESS["CATI_DELIMITER_TYPE"] = "Разделитель полей";
|
||||
$MESS["CATI_TAB"] = "табуляция";
|
||||
$MESS["CATI_TZP"] = "точка с запятой";
|
||||
$MESS["CATI_ZPT"] = "запятая";
|
||||
$MESS["CATI_SPS"] = "пробел";
|
||||
$MESS["CATI_OTR"] = "другой";
|
||||
$MESS["CATI_SAVE_SCHEME"] = "Сохранить настройки как схему";
|
||||
$MESS["CATI_SSCHEME_NAME"] = "Имя схемы";
|
||||
$MESS["CATI_DATA_FILE_NAME"] = "Сохранить файл данных как...";
|
||||
$MESS["CATI_DATA_FILE_NAME1"] = "Имя файла данных";
|
||||
$MESS["CATI_SUCCESS"] = "Выгрузка завершена";
|
||||
$MESS["CATI_SU_ALL"] = "Всего выгружено строк:";
|
||||
$MESS["CATI_BACK"] = "Назад";
|
||||
$MESS["CATI_FIRST_LINE_NAMES"] = "Первая строка содержит имена полей";
|
||||
$MESS["CATI_SU_ALL1"] = "Скачать файл %DATA_URL% на свой компьютер";
|
||||
$MESS["CATI_FIELDS_NEEDED"] = "Выгружать";
|
||||
$MESS["CATI_FIELDS_NAMES"] = "Название поля";
|
||||
$MESS["CATI_FIELDS_SORTING"] = "Порядок";
|
||||
$MESS["CATI_NEXT_STEP_F"] = "Начать выгрузку";
|
||||
$MESS["CATI_DATA_FILE_NAME1_DESC"] = "Если такой файл существует, то он будет перезаписан";
|
||||
$MESS["CATI_TOO_MANY_TABLES"] = "Слишком большое объединение таблиц. Уменьшите количество экспортируемых свойств или типов цен.";
|
||||
$MESS["EST_QUANTITY_FROM"] = "Покупаемое количество от";
|
||||
$MESS["EST_QUANTITY_TO"] = "Покупаемое количество до";
|
||||
$MESS["EST_PRICE_TYPE"] = "Тип цен \"#TYPE#\"";
|
||||
$MESS["EST_PRICE_TYPE2"] = "Тип цен \"#NAME#\" (#TYPE#)";
|
||||
$MESS["CAT_DETAIL_PROPS"] = "Детальные настройки";
|
||||
$MESS["CAT_DETAIL_PROPS_RUN"] = "настроить";
|
||||
$MESS["CET_IS_SKU"] = "Выбран инфоблок торговых предложений.";
|
||||
$MESS["CET_USE_PARENT_SECT"] = "Использовать группы инфоблока товаров";
|
||||
$MESS["CET_YAND_RUN_ERR_IBLOCK_ABSENT"] = "Инфоблок ##IBLOCK_ID# не существует";
|
||||
$MESS["CET_YAND_RUN_ERR_PRODUCT_IBLOCK_ABSENT"] = "Инфоблок товаров ##IBLOCK_ID# не существует";
|
||||
$MESS["CET_YAND_RUN_ERR_SECTION_SET_EMPTY"] = "Список групп не задан";
|
||||
$MESS["CET_YAND_RUN_ERR_SETUP_FILE_ACCESS_DENIED"] = "Недостаточно прав для перезаписи файла #FILE#";
|
||||
$MESS["CET_YAND_RUN_ERR_SETUP_FILE_OPEN_WRITING"] = "Невозможно открыть файл #FILE# для записи";
|
||||
$MESS["CET_YAND_RUN_ERR_SETUP_FILE_WRITE"] = "Запись в файл #FILE# невозможна";
|
||||
$MESS["CET_YAND_SELECT_IBLOCK"] = "Инфоблок для экспорта";
|
||||
$MESS["CET_SELECT_IBLOCK_TYPE"] = "Выберите тип инфоблока";
|
||||
$MESS["CET_YAND_GROUP_AND_OFFERS"] = "Группы и товары для импорта";
|
||||
$MESS["CET_YAND_USE_IBLOCK_SITE"] = "Брать доменное имя из инфоблока";
|
||||
$MESS["CET_ERROR_IBLOCK_PERM"] = "Недостаточно прав для работы с инфоблоком ##IBLOCK_ID#";
|
||||
$MESS["YANDEX_ERR_SKU_SETTINGS_ABSENT"] = "Отсутствуют настройки экспорта торговых предложений";
|
||||
$MESS["CES_ERROR_BAD_EXPORT_FILENAME"] = "Имя файла экспорта содержит запрещенные символы";
|
||||
$MESS["CES_ERROR_BAD_EXPORT_FILENAME_EXTENTIONS"] = "Имя файла экспорта содержит запрещенное расширение";
|
||||
$MESS["CES_ERROR_FORBIDDEN_EXPORT_FILENAME"] = "Запрещенное имя файла экспорта";
|
||||
$MESS["CES_ERROR_PATH_WITHOUT_DEFAUT"] = "Экспорт может быть осуществлён только в папку, указанную в поле <b>Путь по умолчанию для экспортируемых файлов</b> настроек модуля.";
|
||||
$MESS["CAT_ADM_CSV_EXP_TAB1"] = "Инфоблок";
|
||||
$MESS["CAT_ADM_CSV_EXP_TAB1_TITLE"] = "Выбор информационного блока для экспорта";
|
||||
$MESS["CAT_ADM_CSV_EXP_TAB2"] = "Параметры экспорта";
|
||||
$MESS["CAT_ADM_CSV_EXP_TAB2_TITLE"] = "Настройка параметров экспорта";
|
||||
$MESS["CAT_ADM_CSV_EXP_TAB3"] = "Результат";
|
||||
$MESS["CAT_ADM_CSV_EXP_TAB3_TITLE"] = "Результат экспорта";
|
||||
$MESS["CAT_ADM_CSV_EXP_IBLOCK_ID"] = "Инфоблок";
|
||||
$MESS["CAT_ADM_CSV_EXP_ADD_SETTINGS"] = "Дополнительные настройки";
|
||||
$MESS["CAT_ADM_CSV_EXP_EXPORT_FILES"] = "Выгружать файлы";
|
||||
$MESS["CAT_ADM_CSV_EXP_TIME_STEP"] = "Время выполнения шага";
|
||||
$MESS["CAT_ADM_CSV_EXP_TIME_STEP_COMMENT"] = "0 - загрузить все сразу<br>положительное значение - число секунд на выполнение одного шага";
|
||||
$MESS["CAT_ADM_CSV_EXP_SEP_ELEMENTS"] = "Поля и свойства элементов";
|
||||
$MESS["CAT_ADM_CSV_EXP_SEP_SECTIONS"] = "Поля разделов";
|
||||
$MESS["CAT_ADM_CSV_EXP_SEP_SECTIONS_EXT"] = "Поля и пользовательские свойства разделов";
|
||||
$MESS["CAT_ADM_CSV_EXP_SEP_PRODUCT"] = "Свойства товара";
|
||||
$MESS["CAT_ADM_CSV_EXP_SEP_PRICES"] = "Цены";
|
||||
$MESS["CAT_ADM_CSV_EXP_SEP_SKU"] = "Поля и свойства торговых предложений";
|
||||
$MESS["CAT_ADM_CSV_EXP_DESCR_SECT_PROP"] = "Пользовательское свойство";
|
||||
$MESS["CAT_ADM_CSV_EXP_SECTION_LEVEL"] = "Раздел уровня #LEVEL#";
|
||||
$MESS["CATI_FI_PRICE_TYPE2"] = "Цена типа \"#TYPE#\"";
|
||||
$MESS["CATI_FI_PRICE_TYPE3"] = "Цена типа \"#NAME#\" (#TYPE#)";
|
||||
$MESS["CATI_FI_PRICE_CURRENCY"] = "в валюте #CURRENCY#";
|
@ -1,28 +0,0 @@
|
||||
<?
|
||||
$MESS["ERROR_FILENAME_NOT_SET"] = "Не указан файл данных.";
|
||||
$MESS["ERROR_PROFIE_NOT_SET"] = "Не указано имя профиля";
|
||||
$MESS["EXPORT_CATALOGS"] = "Выберите каталоги для выгрузки в ICML:";
|
||||
$MESS["CATALOG"] = "Каталог";
|
||||
$MESS["EXPORT2INTAROCML"] = "Выгрузить в ICML";
|
||||
$MESS["FILENAME"] = "Укажите имя файла данных:";
|
||||
$MESS["PROPERTY"] = "Свойство, содержащее артикул товара";
|
||||
$MESS["ALL_CATALOG"] = "Все каталоги";
|
||||
$MESS["CET_EXPORT"] = "Экспортировать";
|
||||
$MESS["CET_SAVE"] = "Сохранить";
|
||||
$MESS["ERROR_IBLOCK_MODULE"] = "Модуль Инфоблоки не установлен";
|
||||
$MESS["ERROR_IBLOCK_CATALOG"] = "Модуль Каталог не установлен";
|
||||
$MESS["ERROR_IBLOCK_INTAROCRM"] = "Модуль IntaroCRM не установлен";
|
||||
$MESS["ERROR_ARTICLE_NOT_SET"] = "Были установлены поля артикулов, но не установлены Информационные блоки";
|
||||
$MESS["PROFILE_NAME"] = "Имя профиля";
|
||||
$MESS["SETTINGS_INFOBLOCK"] = "Настройки инфоблоков";
|
||||
$MESS["SETTINGS_EXPORT"] = "Настройки экспорта";
|
||||
$MESS["CHECK_ALL_INFOBLOCKS"] = "Выбрать все инфоблоки ";
|
||||
$MESS["LOADED_PROPERTY"] = "Выгружаемое свойство";
|
||||
$MESS["PROPERTY_PRODUCT_HEADER_NAME"] = "Свойство товара";
|
||||
$MESS["PROPERTY_OFFER_HEADER_NAME"] = "Свойство торгового предложения";
|
||||
$MESS["PROPERTY_ARTICLE_HEADER_NAME"] = "Артикул";
|
||||
$MESS["PROPERTY_MANUFACTURER_HEADER_NAME"] = "Производитель";
|
||||
$MESS["PROPERTY_COLOR_HEADER_NAME"] = "Цвет";
|
||||
$MESS["PROPERTY_WEIGHT_HEADER_NAME"] = "Вес";
|
||||
$MESS["PROPERTY_SIZE_HEADER_NAME"] = "Размер";
|
||||
?>
|
@ -1,34 +0,0 @@
|
||||
<?php
|
||||
$MESS ['MODULE_NAME'] = 'IntaroCRM';
|
||||
$MESS ['MODULE_DESCRIPTION'] = 'Модуль интеграции с IntaroCRM — аналитической CRM для электронной коммерции';
|
||||
$MESS ['MODULE_PARTNER_NAME'] = 'Интаро Софт';
|
||||
$MESS ['MODULE_PARTNER_URI'] = 'http://intaro.ru';
|
||||
$MESS ['MODULE_INSTALL_TITLE'] = 'Установка модуля';
|
||||
$MESS ['MODULE_UNINSTALL_TITLE'] = 'Удаление модуля';
|
||||
$MESS ['CANCELED'] = 'Флаг «Отменен»';
|
||||
$MESS ['ERR_SALE'] = 'Отсутствует модуль sale! Дальнейшая установка невозможна.';
|
||||
$MESS ['ERR_IBLOCK'] = 'Отсутствует модуль iblock! Дальнейшая установка невозможна.';
|
||||
$MESS ['ERR_CATALOG'] = 'Отсутствует модуль catalog! Дальнейшая установка невозможна.';
|
||||
$MESS ['ERR_CATALOG'] = 'Отсутствует модуль catalog! Дальнейшая установка невозможна.';
|
||||
$MESS ['INTAROCRM_CURL_ERR'] = 'Для работы модуля интеграции с IntaroCRM требуется PHP-расширение CURL.';
|
||||
$MESS ['ERR_ARTICLE_IBLOCK'] = 'Не установлены артикулы';
|
||||
$MESS ['DATE_TIMEZONE_ERR'] = 'Не указана временная зона в настройках php.';
|
||||
|
||||
$MESS ['ORDER_PROPS'] = 'Настройки соответствия полей заказа IntaroCRM свойствам заказа 1С-Битрикс';
|
||||
$MESS ['FIO'] = 'Ф.И.О.';
|
||||
$MESS ['ZIP'] = 'Индекс';
|
||||
$MESS ['ADDRESS'] = 'Адрес (строкой)';
|
||||
$MESS ['PHONE'] = 'Телефон';
|
||||
$MESS ['EMAIL'] = 'E-mail';
|
||||
$MESS ['COUNTRY'] = 'Страна';
|
||||
$MESS ['REGION'] = 'Область / Край';
|
||||
$MESS ['CITY'] = 'Город';
|
||||
$MESS ['STREET'] = 'Улица';
|
||||
$MESS ['BUILDING'] = 'Строение';
|
||||
$MESS ['FLAT'] = 'Квартира';
|
||||
$MESS ['INTERCOMCODE'] = 'Домофон';
|
||||
$MESS ['FLOOR'] = 'Этаж';
|
||||
$MESS ['BLOCK'] = 'Подъезд';
|
||||
$MESS ['HOUSE'] = 'Строение / корпус';
|
||||
$MESS ['ADDRESS_SHORT'] = 'Краткий адрес';
|
||||
$MESS ['ADDRESS_FULL'] = 'Детальный адрес';
|
@ -1,20 +0,0 @@
|
||||
<?php
|
||||
$MESS ['STEP_NAME'] = 'Шаг 2';
|
||||
$MESS ['MOD_NEXT_STEP'] = 'Следующий шаг';
|
||||
$MESS ['MOD_PREV_STEP'] = 'Предыдущий шаг';
|
||||
$MESS ['DELIVERY_TYPES_LIST'] = 'Способы доставки';
|
||||
$MESS ['PAYMENT_TYPES_LIST'] = 'Способы оплаты';
|
||||
$MESS ['PAYMENT_STATUS_LIST'] = 'Статусы';
|
||||
$MESS ['ORDER_TYPES_LIST'] = 'Типы заказа';
|
||||
$MESS ['PAYMENT_LIST'] = 'Оплата';
|
||||
$MESS ['PAYMENT_Y'] = 'Оплачен';
|
||||
$MESS ['PAYMENT_N'] = 'Не оплачен';
|
||||
$MESS ['CANCELED'] = 'Флаг «Отменен»';
|
||||
$MESS ['INFO_1'] = 'Задайте соответствие между справочниками 1C-Битрикс и справочниками IntaroCRM.';
|
||||
$MESS ['INFO_2'] = 'В случае, если вы не нашли подходящих значений в справочниках IntaroCRM, вы можете внести их в разделе';
|
||||
$MESS ['URL_1'] = 'Администрирование';
|
||||
$MESS ['INFO_3'] = 'После этого подгрузите новые значения, нажав кнопку «Обновить справочники»';
|
||||
$MESS ['UPDATE_CATS'] = 'Обновить справочники';
|
||||
$MESS ['MESS_5'] = 'Произошла ошибка сервера, обратитесь в Интаро Софт.';
|
||||
$MESS ['DELIV_TYPES_EXPORT'] = 'Выгрузить список доставок из 1С-Битрикс';
|
||||
$MESS ['DELIV_TYPES_EXPORT_F'] = 'Настроить соответствие доставок 1С-Битрикс и IntaroCRM';
|
@ -1,34 +0,0 @@
|
||||
<?php
|
||||
$MESS ['STEP_NAME'] = 'Шаг 3';
|
||||
$MESS ['MESS_1'] = 'На данном шаге вы можете выгрузить ранее оформленные заказы в IntaroCRM. Для запуска выгрузки нажмите кнопку «Начать выгрузку».';
|
||||
$MESS ['MESS_2'] = 'Экспорт...';
|
||||
$MESS ['MESS_3'] = 'Экспорт заказов успешно завершён.';
|
||||
$MESS ['MESS_4'] = 'Экспорт заказов приостановлен.';
|
||||
$MESS ['MESS_5'] = 'Произошла ошибка сервера, обратитесь в Интаро Софт.';
|
||||
$MESS ['STOP'] = 'Приостановить выгрузку';
|
||||
$MESS ['START_1'] = 'Начать выгрузку';
|
||||
$MESS ['START_2'] = 'Приостановить выгрузку';
|
||||
$MESS ['START_3'] = 'Возобновить выгрузку';
|
||||
$MESS ['MOD_NEXT_STEP'] = 'Следующий шаг';
|
||||
$MESS ['MOD_PREV_STEP'] = 'Предыдущий шаг';
|
||||
$MESS ['INFO_2'] = ' Задайте соответствие между полями заказа 1C-Битрикс и IntaroCRM.';
|
||||
$MESS ['ORDER_TYPE_INFO'] = 'Тип заказа:';
|
||||
|
||||
$MESS ['ORDER_PROPS'] = 'Настройки соответствия полей заказа IntaroCRM свойствам заказа 1С-Битрикс';
|
||||
$MESS ['FIO'] = 'Ф.И.О.';
|
||||
$MESS ['ZIP'] = 'Индекс';
|
||||
$MESS ['ADDRESS'] = 'Адрес (строкой)';
|
||||
$MESS ['PHONE'] = 'Телефон';
|
||||
$MESS ['EMAIL'] = 'E-mail';
|
||||
$MESS ['COUNTRY'] = 'Страна';
|
||||
$MESS ['REGION'] = 'Область / Край';
|
||||
$MESS ['CITY'] = 'Город';
|
||||
$MESS ['STREET'] = 'Улица';
|
||||
$MESS ['BUILDING'] = 'Строение';
|
||||
$MESS ['FLAT'] = 'Квартира';
|
||||
$MESS ['INTERCOMCODE'] = 'Домофон';
|
||||
$MESS ['FLOOR'] = 'Этаж';
|
||||
$MESS ['BLOCK'] = 'Подъезд';
|
||||
$MESS ['HOUSE'] = 'Строение / корпус';
|
||||
$MESS ['ADDRESS_SHORT'] = 'Краткий адрес';
|
||||
$MESS ['ADDRESS_FULL'] = 'Детальный адрес';
|
@ -1,12 +0,0 @@
|
||||
<?php
|
||||
$MESS ['STEP_NAME'] = 'Шаг 4';
|
||||
$MESS ['MESS_1'] = 'На данном шаге вы можете выгрузить ранее оформленные заказы в IntaroCRM. Для запуска выгрузки нажмите кнопку «Начать выгрузку».';
|
||||
$MESS ['MESS_2'] = 'Экспорт...';
|
||||
$MESS ['MESS_3'] = 'Экспорт заказов успешно завершён.';
|
||||
$MESS ['MESS_4'] = 'Экспорт заказов приостановлен.';
|
||||
$MESS ['MESS_5'] = 'Произошла ошибка сервера, обратитесь в Интаро Софт.';
|
||||
$MESS ['STOP'] = 'Приостановить выгрузку';
|
||||
$MESS ['START_1'] = 'Начать выгрузку';
|
||||
$MESS ['START_2'] = 'Приостановить выгрузку';
|
||||
$MESS ['START_3'] = 'Возобновить выгрузку';
|
||||
$MESS ['MOD_NEXT_STEP'] = 'Следующий шаг';
|
@ -1,24 +0,0 @@
|
||||
<?php
|
||||
$MESS ['STEP_NAME'] = 'Шаг 5';
|
||||
$MESS ['MOD_NEXT_STEP'] = 'Завершить установку';
|
||||
$MESS ['MOD_PREV_STEP'] = 'Предыдущий шаг';
|
||||
$MESS ['DELIVERY_TYPES_LIST'] = 'Способы доставки';
|
||||
$MESS ['PAYMENT_TYPES_LIST'] = 'Способы оплаты';
|
||||
$MESS ['PAYMENT_STATUS_LIST'] = 'Статусы';
|
||||
$MESS ['ORDER_TYPES_LIST'] = 'Типы заказа';
|
||||
$MESS ['PAYMENT_LIST'] = 'Оплата';
|
||||
$MESS ['PAYMENT_Y'] = 'Оплачен';
|
||||
$MESS ['PAYMENT_N'] = 'Не оплачен';
|
||||
$MESS ['CANCELED'] = 'Флаг «Отменен»';
|
||||
$MESS ['INFO_1'] = ' Задайте соответствие между справочниками 1C-Битрикс и справочниками IntaroCRM.';
|
||||
$MESS ['LOAD_PERIOD'] = 'Выгружать каталог периодически';
|
||||
$MESS ['NOT_LOADING'] = 'Нет';
|
||||
$MESS ['CRON_LOADING'] = 'С помощью CRON каждые 24 часа';
|
||||
$MESS ['AGENT_LOADING'] = 'Агентом каждые 24 часа (по умолчанию)';
|
||||
$MESS ['LOAD_NOW'] = 'Выгрузить сейчас';
|
||||
$MESS ['PROFILE_NAME'] = 'Имя профиля:';
|
||||
$MESS ['PROFILE_NAME_EXAMPLE'] = 'Выгрузка каталога IntaroCRM';
|
||||
$MESS ['ERR_FIELDS_PROFILE'] = 'Неверно заполнено поле имени профиля';
|
||||
$MESS ['ERR_FIELDS_IBLOCK'] = 'Не выбрано ни одного информационного блока';
|
||||
$MESS ['ERR_FIELDS_ARTICLE'] = 'Не выбраны артикулы';
|
||||
$MESS ['ERR_FIELDS_FILE'] = 'Не указано имя файла';
|
@ -1,18 +0,0 @@
|
||||
<?php
|
||||
$MESS ['INTAROCRM_INFO'] = '
|
||||
<h2>Дальнейшие действия<h2>
|
||||
<p>
|
||||
Если вы произвели выгрузку заказов на шаге 3, то эти заказы уже доступны в вашей CRM и
|
||||
через некоторое время по этим заказам будет подготовлены аналитические отчеты в Панели KPI.
|
||||
</p>
|
||||
<p>
|
||||
Новые заказы будут отправляться агентом <span style="font-family: Courier New;">ICrmOrderActions::uploadOrdersAgent();</span>
|
||||
в IntaroCRM каждые 10 минут (интервал можно изменить в разделе <a href="/bitrix/admin/agent_list.php">Агенты</a>).
|
||||
</p>
|
||||
<p>
|
||||
Если вы выбрали опцию «Выгрузить каталог сейчас» на шаге 4, то ваш каталог уже загружается в IntaroCRM.
|
||||
Загрузка длится, как правило, не более 10 минут. Если вы не выбирали эту опцию, то генерацию файла с каталогом
|
||||
можно произвести экспортом «IntaroCRM» в разделе Магазин > Настройки > <a href="/bitrix/admin/cat_export_setup.php">Экспорт данных</a>.
|
||||
IntaroCRM проверяет и загружает данный файл с каталогом каждые 3 часа.
|
||||
</p>
|
||||
';
|
@ -1,3 +0,0 @@
|
||||
<?php
|
||||
$MESS['MOD_UNINST_OK'] = 'Удаление модуля успешно завершено';
|
||||
$MESS['MOD_BACK'] = 'Вернуться в список';
|
@ -1,55 +0,0 @@
|
||||
<?php
|
||||
$MESS ['ICRM_OPTIONS_GENERAL_TAB'] = 'Общие настройки';
|
||||
$MESS ['ICRM_OPTIONS_IMPORT_TAB'] = 'Настройки импорта';
|
||||
$MESS ['ICRM_OPTIONS_ORDER_PROPS_TAB'] = 'Cоответствия полей свойств заказа';
|
||||
$MESS ['ICRM_CONN_SETTINGS'] = 'Настройка соединения';
|
||||
$MESS ['ICRM_API_HOST'] = 'Адрес Intaro CRM:';
|
||||
$MESS ['ICRM_API_KEY'] = 'Ключ авторизации:';
|
||||
$MESS ['ICRM_SITES'] = 'Активные сайты:';
|
||||
|
||||
$MESS ['ICRM_OPTIONS_CATALOG_TAB'] = 'Настройка справочников';
|
||||
$MESS ['DELIVERY_TYPES_LIST'] = 'Способы доставки';
|
||||
$MESS ['PAYMENT_TYPES_LIST'] = 'Способы оплаты';
|
||||
$MESS ['PAYMENT_STATUS_LIST'] = 'Статусы';
|
||||
$MESS ['ORDER_TYPES_LIST'] = 'Типы заказа';
|
||||
$MESS ['PAYMENT_LIST'] = 'Оплата';
|
||||
$MESS ['PAYMENT_Y'] = 'Оплачен';
|
||||
$MESS ['PAYMENT_N'] = 'Не оплачен';
|
||||
|
||||
$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'] = 'Изменения успешно сохранены.';
|
||||
$MESS ['CANCELED'] = 'Флаг «Отменен»';
|
||||
$MESS ['INFO_1'] = ' Задайте соответствие между справочниками 1C-Битрикс и справочниками IntaroCRM.';
|
||||
|
||||
$MESS ['ICRM_OPTIONS_ORDER_DISCHARGE_TAB'] = 'Режим выгрузки заказов';
|
||||
$MESS ['ORDER_DISCH'] = 'Режим выгрузки заказов';
|
||||
$MESS ['DISCHARGE_AGENT'] = 'Выгрузка заказов с помощью агента';
|
||||
$MESS ['DISCHARGE_EVENTS'] = 'Выгрузка заказов по событию';
|
||||
|
||||
$MESS ['INFO_2'] = ' Задайте соответствие между полями заказа 1C-Битрикс и IntaroCRM.';
|
||||
|
||||
$MESS ['ORDER_PROPS'] = 'Настройки соответствия полей заказа IntaroCRM свойствам заказа 1С-Битрикс';
|
||||
$MESS ['FIO'] = 'Ф.И.О.';
|
||||
$MESS ['ZIP'] = 'Индекс';
|
||||
$MESS ['ADDRESS'] = 'Адрес (строкой)';
|
||||
$MESS ['PHONE'] = 'Телефон';
|
||||
$MESS ['EMAIL'] = 'E-mail';
|
||||
$MESS ['COUNTRY'] = 'Страна';
|
||||
$MESS ['REGION'] = 'Область / Край';
|
||||
$MESS ['CITY'] = 'Город';
|
||||
$MESS ['STREET'] = 'Улица';
|
||||
$MESS ['BUILDING'] = 'Строение';
|
||||
$MESS ['FLAT'] = 'Квартира';
|
||||
$MESS ['INTERCOMCODE'] = 'Домофон';
|
||||
$MESS ['FLOOR'] = 'Этаж';
|
||||
$MESS ['BLOCK'] = 'Подъезд';
|
||||
$MESS ['HOUSE'] = 'Строение / корпус';
|
||||
$MESS ['ADDRESS_SHORT'] = 'Краткий адрес';
|
||||
$MESS ['ADDRESS_FULL'] = 'Детальный адрес';
|
||||
|
||||
$MESS ['ORDER_TYPE_INFO'] = 'Тип заказа:';
|
@ -8,6 +8,6 @@ $MESS ['ERR_404'] = 'Возможно неверно введен адрес Int
|
||||
$MESS ['ERR_403'] = 'Неверный apiKey.';
|
||||
$MESS ['ERR_0'] = 'Превышено время ожидания ответа от сервера.';
|
||||
$MESS ['ERR_FIELDS_API_HOST'] = 'Неверно заполнены поля.';
|
||||
$MESS ['INFO_1'] = 'Введите адрес экземпляра IntaroCRM (например, http://demo.intarocrm.ru) и API-ключ.';
|
||||
$MESS ['INFO_1'] = 'Введите адрес экземпляра IntaroCRM (например, https://demo.intarocrm.ru) и API-ключ.';
|
||||
$MESS ['INFO_2'] = 'API-ключ можно сгенерировать при регистрации магазина в IntaroCRM (Администрирование > Интеграция).';
|
||||
$MESS ['INFO_3'] = 'Код сайта в 1С-Битрикс должен совпадать с кодом сайта в IntaroCRM (Администрирование > Магазины).';
|
@ -96,6 +96,10 @@ if (isset($_POST['Update']) && ($_POST['Update'] == 'Y')) {
|
||||
$api_host = htmlspecialchars(trim($_POST['api_host']));
|
||||
$api_key = htmlspecialchars(trim($_POST['api_key']));
|
||||
|
||||
$api_host = parse_url($api_host);
|
||||
if ($api_host['scheme'] != 'https') $api_host['scheme'] = 'https';
|
||||
$api_host = $api_host['scheme'] . '://' . $api_host['host'];
|
||||
|
||||
// if empty so select all? or exception --not obligatory
|
||||
$orderSites = array();
|
||||
foreach ($_POST[$CRM_ORDER_SITES] as $site) {
|
||||
|
9
intaro.intarocrm/updater.php
Normal file
9
intaro.intarocrm/updater.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
$mid = 'intaro.intarocrm';
|
||||
$CRM_API_HOST_OPTION = 'api_host';
|
||||
|
||||
$api_host = COption::GetOptionString($mid, $CRM_API_HOST_OPTION, 0);
|
||||
$api_host = parse_url($api_host);
|
||||
if ($api_host['scheme'] != 'https') $api_host['scheme'] = 'https';
|
||||
$api_host = $api_host['scheme'] . '://' . $api_host['host'];
|
||||
COption::SetOptionString($mid, $CRM_API_HOST_OPTION, $api_host);
|
Loading…
Reference in New Issue
Block a user