Jump to content
SpravkaCRM.ru - Ваш справочник по CRM
SpravkaCRM.ru

Формирование длинных списков-массивов в SugarCRM/SuiteCRM

Recommended Posts

Буквально только что столкнулся с задачкой: для одного рейтингового агентства необходимо было добавить поле "Страна по ОКСМ" в несколько модулей (Контрагенты, Ценные бумаги и так далее). По сути это список стран с указанием буквенного их обозначения. Погуглив немного нашел этот список: http://mvf.klerk.ru/spr/spr63.htm, но он в виде таблицы на странице. Таблица большая, руками не вставить 100%. Поискал еще немного, и нашел такой же список в XLS. Здорово! Таблица есть. Теперь осталось ее только вставить в CRM-систему.

А вставить ее надо в виде комбобокса в файл к другим комбобоксам по адресу: custom/include/language/ru_ru.lang.php. Если это сделать, то тогда список можно будет использовать при создании нового поля типа Enum (выпадающий список).

Осталась маааленькая проблемка: как перегнать строки их Excel в массив в PHP?

На выручку пришли средства, которые уже заложены в SugarCRM/SuiteCRM! Вы наверное в курсе, что чистая CRM-система идет без файла config.php? Именно отсутствие этого файла сигнализирует системе о том, что она еще не установлена, и позволяет пройти процедуру установки. Так вот после установки файл config.php появляется в системе! И правильно! он содержит массив на PHP! То есть CRM-система умеет брать массив, и записывать его в PHP-файл так, что подключив его через require_once мы получим этот массив!

В общем поискав где это делается в системе была найдена замечательная функция write_array_to_file(), которая позволяет на входе получить название массива как он будет называться в файле, затем исходный массив для занесения его в файл и путь до файла, который будет содержать сгенеренный PHP-код. Нам осталось лишь подать в эту функцию массив. 

У нас есть XLS-файл. Мы его сохраняем в CSV-файл. Далее у нас есть файл include/parsecsv.lib.php, который умеет парсить CSV-файлы. Осталось все это скомпоновать вместе:

<?php
if (!defined('sugarEntry')) define('sugarEntry', true);
/**
 * Created by PhpStorm.
 * User: CRMHosting.ru
 * Date: 08.11.16
 * Time: 12:31
 */

require_once('include/entryPoint.php');
require_once('include/parsecsv.lib.php');

print_array("*** test_oksm.php ***");

// Парсинг файла
$csv = new parseCSV();
$csv->delimiter = ';';
$csv->output_delimiter = ';';
$csv->convert_encoding = true;
$csv->input_encoding = 'windows-1251';
$csv->output_encoding = 'utf-8';
$csv->parse('cache/oksm.csv');

$return_array = array();

foreach ($csv->data as $data) {
    $return_array[$data['a2']] = $data['name'];
}
print_array($return_array);

write_array_to_file('oksm', $return_array, 'cache/oksm.php');

После выполнения этого кода будет создан файл cache/oksm.php, содержащий нужный нам массив:

<?php
// created: 2016-11-08 12:37:56
$oksm = array (
  '' => '',
  'AF' => 'АФГАНИСТАН',
  'AL' => 'АЛБАНИЯ',
  'AQ' => 'АНТАРКТИДА',
  'DZ' => 'АЛЖИР',
  'AS' => 'АМЕРИКАНСКОЕ САМОА',
  'AD' => 'АНДОРРА',
  'AO' => 'АНГОЛА',
  'AG' => 'АНТИГУА И БАРБУДА',
  'AZ' => 'АЗЕРБАЙДЖАН',
  'AR' => 'АРГЕНТИНА',
  'AU' => 'АВСТРАЛИЯ',
  'AT' => 'АВСТРИЯ',
  'BS' => 'БАГАМЫ',
  'BH' => 'БАХРЕЙН',
  'BD' => 'БАНГЛАДЕШ',
  'AM' => 'АРМЕНИЯ',
  'BB' => 'БАРБАДОС',
  'BE' => 'БЕЛЬГИЯ',
  'BM' => 'БЕРМУДЫ',
  'BT' => 'БУТАН',
  'BO' => 'БОЛИВИЯ, МНОГОНАЦИОНАЛЬНОЕ ГОСУДАРСТВО',
  'BA' => 'БОСНИЯ И ГЕРЦЕГОВИНА',
  'BW' => 'БОТСВАНА',
  'BV' => 'ОСТРОВ БУВЕ',
  'BR' => 'БРАЗИЛИЯ',
  'BZ' => 'БЕЛИЗ',
  'IO' => 'БРИТАНСКАЯ ТЕРРИТОРИЯ В ИНДИЙСКОМ ОКЕАНЕ',
  'SB' => 'СОЛОМОНОВЫ ОСТРОВА',
  'VG' => 'ВИРГИНСКИЕ ОСТРОВА, БРИТАНСКИЕ',
  'BN' => 'БРУНЕЙ-ДАРУССАЛАМ',
  'BG' => 'БОЛГАРИЯ',
  'MM' => 'МЬЯНМА',
  'BI' => 'БУРУНДИ',
  'BY' => 'БЕЛАРУСЬ',
  'KH' => 'КАМБОДЖА',
  'CM' => 'КАМЕРУН',
  'CA' => 'КАНАДА',
  'CV' => 'КАБО-ВЕРДЕ',
  'KY' => 'ОСТРОВА КАЙМАН',
  'CF' => 'ЦЕНТРАЛЬНО-АФРИКАНСКАЯ РЕСПУБЛИКА',
  'LK' => 'ШРИ-ЛАНКА',
  'TD' => 'ЧАД',
  'CL' => 'ЧИЛИ',
  'CN' => 'КИТАЙ',
  'TW' => 'ТАЙВАНЬ (КИТАЙ)',
  'CX' => 'ОСТРОВ РОЖДЕСТВА',
  'CC' => 'КОКОСОВЫЕ (КИЛИНГ) ОСТРОВА',
  'CO' => 'КОЛУМБИЯ',
  'KM' => 'КОМОРЫ',
  'YT' => 'МАЙОТТА',
  'CG' => 'КОНГО',
  'CD' => 'КОНГО, ДЕМОКРАТИЧЕСКАЯ РЕСПУБЛИКА',
  'CK' => 'ОСТРОВА КУКА',
  'CR' => 'КОСТА-РИКА',
  'HR' => 'ХОРВАТИЯ',
  'CU' => 'КУБА',
  'CY' => 'КИПР',
  'CZ' => 'ЧЕШСКАЯ РЕСПУБЛИКА',
  'BJ' => 'БЕНИН',
  'DK' => 'ДАНИЯ',
  'DM' => 'ДОМИНИКА',
  'DO' => 'ДОМИНИКАНСКАЯ РЕСПУБЛИКА',
  'EC' => 'ЭКВАДОР',
  'SV' => 'ЭЛЬ-САЛЬВАДОР',
  'GQ' => 'ЭКВАТОРИАЛЬНАЯ ГВИНЕЯ',
  'ET' => 'ЭФИОПИЯ',
  'ER' => 'ЭРИТРЕЯ',
  'EE' => 'ЭСТОНИЯ',
  'FO' => 'ФАРЕРСКИЕ ОСТРОВА',
  'FK' => 'ФОЛКЛЕНДСКИЕ ОСТРОВА (МАЛЬВИНСКИЕ)',
  'GS' => 'ЮЖНАЯ ДЖОРДЖИЯ И ЮЖНЫЕ САНДВИЧЕВЫ ОСТРОВА',
  'FJ' => 'ФИДЖИ',
  'FI' => 'ФИНЛЯНДИЯ',
  'АХ' => 'ЭЛАНДСКИЕ ОСТРОВА',
  'FR' => 'ФРАНЦИЯ',
  'GF' => 'ФРАНЦУЗСКАЯ ГВИАНА',
  'PF' => 'ФРАНЦУЗСКАЯ ПОЛИНЕЗИЯ',
  'TF' => 'ФРАНЦУЗСКИЕ ЮЖНЫЕ ТЕРРИТОРИИ',
  'DJ' => 'ДЖИБУТИ',
  'GA' => 'ГАБОН',
  'GE' => 'ГРУЗИЯ',
  'GM' => 'ГАМБИЯ',
  'PS' => 'ПАЛЕСТИНСКАЯ ТЕРРИТОРИЯ, ОККУПИРОВАННАЯ',
  'DE' => 'ГЕРМАНИЯ',
  'GH' => 'ГАНА',
  'GI' => 'ГИБРАЛТАР',
  'KI' => 'КИРИБАТИ',
  'GR' => 'ГРЕЦИЯ',
  'GL' => 'ГРЕНЛАНДИЯ',
  'GD' => 'ГРЕНАДА',
  'GP' => 'ГВАДЕЛУПА',
  'GU' => 'ГУАМ',
  'GT' => 'ГВАТЕМАЛА',
  'GN' => 'ГВИНЕЯ',
  'GY' => 'ГАЙАНА',
  'HT' => 'ГАИТИ',
  'HM' => 'ОСТРОВ ХЕРД И ОСТРОВА МАКДОНАЛЬД',
  'VA' => 'ПАПСКИЙ ПРЕСТОЛ (ГОСУДАРСТВО - ГОРОД ВАТИКАН)',
  'HN' => 'ГОНДУРАС',
  'HK' => 'ГОНКОНГ',
  'HU' => 'ВЕНГРИЯ',
  'IS' => 'ИСЛАНДИЯ',
  'IN' => 'ИНДИЯ',
  'ID' => 'ИНДОНЕЗИЯ',
  'IR' => 'ИРАН, ИСЛАМСКАЯ РЕСПУБЛИКА',
  'IQ' => 'ИРАК',
  'IE' => 'ИРЛАНДИЯ',
  'IL' => 'ИЗРАИЛЬ',
  'IT' => 'ИТАЛИЯ',
  'CI' => 'КОТ Д\'ИВУАР',
  'JM' => 'ЯМАЙКА',
  'JP' => 'ЯПОНИЯ',
  'KZ' => 'КАЗАХСТАН',
  'JO' => 'ИОРДАНИЯ',
  'KE' => 'КЕНИЯ',
  'KP' => 'КОРЕЯ, НАРОДНО-ДЕМОКРАТИЧЕСКАЯ РЕСПУБЛИКА',
  'KR' => 'КОРЕЯ, РЕСПУБЛИКА',
  'KW' => 'КУВЕЙТ',
  'KG' => 'КИРГИЗИЯ',
  'LA' => 'ЛАОССКАЯ НАРОДНО-ДЕМОКРАТИЧЕСКАЯ РЕСПУБЛИКА',
  'LB' => 'ЛИВАН',
  'LS' => 'ЛЕСОТО',
  'LV' => 'ЛАТВИЯ',
  'LR' => 'ЛИБЕРИЯ',
  'LY' => 'ЛИВИЙСКАЯ АРАБСКАЯ ДЖАМАХИРИЯ',
  'LI' => 'ЛИХТЕНШТЕЙН',
  'LT' => 'ЛИТВА',
  'LU' => 'ЛЮКСЕМБУРГ',
  'MO' => 'МАКАО',
  'MG' => 'МАДАГАСКАР',
  'MW' => 'МАЛАВИ',
  'MY' => 'МАЛАЙЗИЯ',
  'MV' => 'МАЛЬДИВЫ',
  'ML' => 'МАЛИ',
  'MT' => 'МАЛЬТА',
  'MQ' => 'МАРТИНИКА',
  'MR' => 'МАВРИТАНИЯ',
  'MU' => 'МАВРИКИЙ',
  'MX' => 'МЕКСИКА',
  'MC' => 'МОНАКО',
  'MN' => 'МОНГОЛИЯ',
  'MD' => 'МОЛДОВА, РЕСПУБЛИКА',
  'ME' => 'ЧЕРНОГОРИЯ',
  'MS' => 'МОНТСЕРРАТ',
  'MA' => 'МАРОККО',
  'MZ' => 'МОЗАМБИК',
  'OM' => 'ОМАН',
  'NA' => 'НАМИБИЯ',
  'NR' => 'НАУРУ',
  'NP' => 'НЕПАЛ',
  'NL' => 'НИДЕРЛАНДЫ',
  'CW' => 'КЮРАСАО',
  'AW' => 'АРУБА',
  'SX' => 'СЕН-МАРТЕН (нидерландская часть)',
  'BQ' => 'БОНЭЙР, СИНТ-ЭСТАТИУС И САБА',
  'NC' => 'НОВАЯ КАЛЕДОНИЯ',
  'VU' => 'ВАНУАТУ',
  'NZ' => 'НОВАЯ ЗЕЛАНДИЯ',
  'NI' => 'НИКАРАГУА',
  'NE' => 'НИГЕР',
  'NG' => 'НИГЕРИЯ',
  'NU' => 'НИУЭ',
  'NF' => 'ОСТРОВ НОРФОЛК',
  'NO' => 'НОРВЕГИЯ',
  'MP' => 'СЕВЕРНЫЕ МАРИАНСКИЕ ОСТРОВА',
  'UM' => 'МАЛЫЕ ТИХООКЕАНСКИЕ ОТДАЛЕННЫЕ ОСТРОВА СОЕДИНЕННЫХ ШТАТОВ',
  'FM' => 'МИКРОНЕЗИЯ, ФЕДЕРАТИВНЫЕ ШТАТЫ',
  'MH' => 'МАРШАЛЛОВЫ ОСТРОВА',
  'PW' => 'ПАЛАУ',
  'PK' => 'ПАКИСТАН',
  'PA' => 'ПАНАМА',
  'PG' => 'ПАПУА-НОВАЯ ГВИНЕЯ',
  'PY' => 'ПАРАГВАЙ',
  'PE' => 'ПЕРУ',
  'PH' => 'ФИЛИППИНЫ',
  'PN' => 'ПИТКЕРН',
  'PL' => 'ПОЛЬША',
  'PT' => 'ПОРТУГАЛИЯ',
  'GW' => 'ГВИНЕЯ-БИСАУ',
  'TL' => 'ТИМОР-ЛЕСТЕ',
  'PR' => 'ПУЭРТО-РИКО',
  'QA' => 'КАТАР',
  'RE' => 'РЕЮНЬОН',
  'RO' => 'РУМЫНИЯ',
  'RU' => 'РОССИЯ',
  'RW' => 'РУАНДА',
  'BL' => 'СЕН-БАРТЕЛЕМИ',
  'SH' => 'СВЯТАЯ ЕЛЕНА, ОСТРОВ ВОЗНЕСЕНИЯ, ТРИСТАН-ДА-КУНЬЯ',
  'KN' => 'СЕНТ-КИТС И НЕВИС',
  'AI' => 'АНГИЛЬЯ',
  'LC' => 'СЕНТ-ЛЮСИЯ',
  'MF' => 'СЕН-МАРТЕН',
  'PM' => 'СЕН-ПЬЕР И МИКЕЛОН',
  'VC' => 'СЕНТ-ВИНСЕНТ И ГРЕНАДИНЫ',
  'SM' => 'САН-МАРИНО',
  'ST' => 'САН-ТОМЕ И ПРИНСИПИ',
  'SA' => 'САУДОВСКАЯ АРАВИЯ',
  'SN' => 'СЕНЕГАЛ',
  'RS' => 'СЕРБИЯ',
  'SC' => 'СЕЙШЕЛЫ',
  'SL' => 'СЬЕРРА-ЛЕОНЕ',
  'SG' => 'СИНГАПУР',
  'SK' => 'СЛОВАКИЯ',
  'VN' => 'ВЬЕТНАМ',
  'SI' => 'СЛОВЕНИЯ',
  'SO' => 'СОМАЛИ',
  'ZA' => 'ЮЖНАЯ АФРИКА',
  'ZW' => 'ЗИМБАБВЕ',
  'ES' => 'ИСПАНИЯ',
  'EH' => 'ЗАПАДНАЯ САХАРА',
  'SD' => 'СУДАН',
  'SR' => 'СУРИНАМ',
  'SJ' => 'ШПИЦБЕРГЕН И ЯН МАЙЕН',
  'SZ' => 'СВАЗИЛЕНД',
  'SE' => 'ШВЕЦИЯ',
  'CH' => 'ШВЕЙЦАРИЯ',
  'SY' => 'СИРИЙСКАЯ АРАБСКАЯ РЕСПУБЛИКА',
  'TJ' => 'ТАДЖИКИСТАН',
  'TH' => 'ТАИЛАНД',
  'TG' => 'ТОГО',
  'TK' => 'ТОКЕЛАУ',
  'TO' => 'ТОНГА',
  'TT' => 'ТРИНИДАД И ТОБАГО',
  'AE' => 'ОБЪЕДИНЕННЫЕ АРАБСКИЕ ЭМИРАТЫ',
  'TN' => 'ТУНИС',
  'TR' => 'ТУРЦИЯ',
  'TM' => 'ТУРКМЕНИЯ',
  'TC' => 'ОСТРОВА ТЕРКС И КАЙКОС',
  'TV' => 'ТУВАЛУ',
  'UG' => 'УГАНДА',
  'UA' => 'УКРАИНА',
  'MK' => 'РЕСПУБЛИКА МАКЕДОНИЯ',
  'EG' => 'ЕГИПЕТ',
  'GB' => 'СОЕДИНЕННОЕ КОРОЛЕВСТВО',
  'GG' => 'ГЕРНСИ',
  'JE' => 'ДЖЕРСИ',
  'IM' => 'ОСТРОВ МЭН',
  'TZ' => 'ТАНЗАНИЯ, ОБЪЕДИНЕННАЯ РЕСПУБЛИКА',
  'US' => 'СОЕДИНЕННЫЕ ШТАТЫ',
  'VI' => 'ВИРГИНСКИЕ ОСТРОВА, США',
  'BF' => 'БУРКИНА-ФАСО',
  'UY' => 'УРУГВАЙ',
  'UZ' => 'УЗБЕКИСТАН',
  'VE' => 'ВЕНЕСУЭЛА БОЛИВАРИАНСКАЯ РЕСПУБЛИКА',
  'WF' => 'УОЛЛИС И ФУТУНА',
  'WS' => 'САМОА',
  'YE' => 'ЙЕМЕН',
  'ZM' => 'ЗАМБИЯ',
  'AB' => 'АБХАЗИЯ',
  'OS' => 'ЮЖНАЯ ОСЕТИЯ',
);

Ну а дальше вставляйте его в custom/include/language/ru_ru.lang.php (например $GLOBALS['app_list_strings']['oksm_a2_list']), и используйте по назначению. 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...