<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Анализ продаж на карте по свойству.
Контрагенты с разными свойствами отображаются разными цветами.
Обработка для 1С Торговля и Склад и Комплексная
Для начала нужно запустить обработку [Установка координат] — кого найдет на фактическому адресу, тем сохранить координаты.
А потом можно формировать Отчет Анализ продаж.
Если у кого-то будет желание, можно добавить еще аналитику….
Это не законченное решение, а скорее решение для обсуждения 🙂
Алле! Установка координат тупо тянет координаты из свойств… ничего нет про фактический адрес…
Исправил. — по ошибке залил не тот файл…
кстати! Google Chrome почему-то не заливает файлы на сервер, это вопрос наверно к support…
И еще одно предупреждение…
Если показываете большой файл xml, то IE часто выдает ошибку что-то вроде
Сообщение: HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917)
в Google Chrome, Opera эта ошибка не возникает…
Сообщить(«Выберите маршрут из папки «+СокрЛП(Константа.АдресКартыFtp)+»
{АНАЛИЗПРОДАЖНАКАРТЕ2.ERT(32)}: Поле агрегатного объекта не обнаружено (АдресКартыFtp)
Спасибо, исправил.
А так, понравилось, вот только один хрен придётся половине (даже большинству) адрес руктями ставить… 🙁
(7) да от этого никуда не деться… к сожалению!
хотя девочка-оператор очень быстро с этим справляется, правда упрашивать приходиться долго….
Поиск проходит по всем большим городам. Почти все миллионники в списке…
Мы юзаем деловую карту — для прокладки маршрута и логистики — считается ЗП водил от этого…
Дык, половина адресов вообще хрен найдешь — их нет ни в классификаторе , ни на карте.. 🙁
(10) Интересно. а можно по-подробнее о деловой карте?
а маршруты тоже составляются? удачные?
(11) Составляются.. по ним и идёт потом пересчет в «км»… Но, иногда приходится проверять — может «не» щаметить прямого пути — проложит хрен знает как.
И сопряжение карт (разных областей) тоже хромает.
Забацайте для восьмерки, цены Вам не будет! А так плюс 🙂
(13) ок, 💡 идея
В центре города всегда продажи лучше, чем на окраине.
И для этой прописной истины надо делать картинки ?
Чудная страна, населенная одинэсовцами !
(15) Гы… вы продаете только в 1 городе ?
Как вы себя ограничиваете…
+16 или взять, например Мск — интересно посмотреть распределение по скеторам — где в каком округе больше продается, так что вам низачот.
(17) Игрушка для богатого заказчика 😉
(18) Ага, с учетом, что всЁ бесплатно, то для ОООчень богатого… 😀
как говориться, нет ограничений… кроме тех, которые мы себе придумали…
(15) Коллега, Вы не совсем правы, если строить анализ статистики, то обнаруживаются интересные вещи. Вдобавок автор смотрит не только кучность расположения, а предлагает оценивать еще и свойства по цвету.
Красиво. Но анализируется похоже только покрытие территории…
В лучшем случае анализ перекрытия разных направлений (менеджеров, ТоргПредов и т.п.)