Пример #1
0
    public static function takeOutOrdersToCorrespondentTable()
    {
        $platformId = \Bitrix\Sale\TradingPlatform\YandexMarket::getInstance()->getId();
        if (intval($platformId) <= 0) {
            return "";
        }
        $conn = \Bitrix\Main\Application::getConnection();
        $helper = $conn->getSqlHelper();
        $correspondence = $conn->query('SELECT ID
				FROM ' . $helper->quote(\Bitrix\Sale\TradingPlatform\OrderTable::getTableName()) . '
				WHERE ' . $helper->quote('TRADING_PLATFORM_ID') . '=' . $platformId);
        //check if we already tried to convert
        if ($correspondence->fetch()) {
            return "";
        }
        if ($conn->getType() == "mssql") {
            $lenOpName = "LEN";
        } else {
            $lenOpName = "LENGTH";
        }
        if ($conn->getType() == "oracle") {
            $right = 'SUBSTR(XML_ID, -(' . $lenOpName . '(XML_ID)-' . strlen(self::XML_ID_PREFIX) . '))';
        } else {
            $right = 'RIGHT(XML_ID, ' . $lenOpName . '(XML_ID)-' . strlen(self::XML_ID_PREFIX) . ')';
        }
        //take out correspondence to
        $sql = 'INSERT INTO ' . \Bitrix\Sale\TradingPlatform\OrderTable::getTableName() . ' (ORDER_ID, EXTERNAL_ORDER_ID, TRADING_PLATFORM_ID)
				SELECT ID, ' . $right . ', ' . $platformId . '
					FROM ' . \Bitrix\Sale\Internals\OrderTable::getTableName() . '
					WHERE XML_ID LIKE ' . "'" . self::XML_ID_PREFIX . "%'";
        try {
            $conn->queryExecute($sql);
        } catch (\Bitrix\Main\DB\SqlQueryException $e) {
            CEventLog::Add(array("SEVERITY" => "ERROR", "AUDIT_TYPE_ID" => "YMARKET_XML_ID_CONVERT_INSERT_ERROR", "MODULE_ID" => "sale", "ITEM_ID" => "YMARKET", "DESCRIPTION" => __FILE__ . ': ' . $e->getMessage()));
        }
        return "";
    }