<?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='\
спосибо за предоставленную программу
спасибо
Вам спасибо за отзывы 🙂
О блин,хотел рейтинг поднять,а оказалось уже оценивал.В общем-хорошая разработка.Только мелочь(с НДС и без НдС)добавил и «летает» на большой базе.
При обилии разработок единственное что быстро позволяет оценить необходимость разработки — это содержательные скриншоты. Ну в лом, что ли, положить?
Кому — чего, а Сhe Burashke — скриншоты 🙂
Трафика мне жалко, он у меня лимитированный, а обработка «весит» во много раз меньше, чем скриншоты 🙂
Полезная штука
Чо та я не вкуряю в этот «Анализ».
Открываю в ТиС9.2.4. Фильтр»поставщики» он у мня свойства открывает…
Не вкурил, что за уровень детализации… Можно поподробнее?
Жаль, что только по Группам.(без Номенклатуры).., все думаю за каким там артикул стоит, у групп же его нет :)…
Фенкс! Доработай чуть-чуть.
Выводил б номенклатуру.. цены бы ему (Анализу) не было!!
2 GENDALF:
http://infostart.ru/projects/index.php?id=562&ref=987 («Анализ продаж (общий) для Торговля и склад 9.2»). По поводу фильтра по поставщикам: отчет делал для себя, поэтому отбор по «основному свойству номенклатуры» назвал «поставщик», т.к. у меня основное свойство номенклатуры — поставщик товара.
Открыть обработку, попробовать поменять некоторые параметры, посмотреть внимательно на галочку «только группы», много думать…
Хотя этот отчет был сделан именно для анализа по группам. Анализ по элементам: полно типовых, также можешь посмотреть вот этот
Оч. хорошая штука с точки зрения практического управления номенклатурой.
Но есть 2 хочу:
1) Недурставенно было бы установить возможность выбора склада ( а то а распределёнке только итого поакзывает)
2) Было бы чудесато, если бы сушествовала возможность вывода для анализа не только Групп номенклатуры, но и Свойств номенклатуры. Для примера: У меня в практике справочник построен по производителям продукции ( Например: Проктер и Гембл, Весна и т.п.) , а свойства номенклатуры по категориям товаров установлены ( стир.порошки, шампуни, з.пасты). Т.е. сейчас я могу видеть из анализа, что Проктер продается лучше а весна хуже в объёме и в абсолюте прибыли, но наценка на Весне выше. А проанализаровать по свойствам ( т.е. по категориям товара) не могу. Т.е. выяснить какя товарная категория является основной в образовании прибыли, лидер по наценке и объёму.
Имея эти данные можно работать в соотетствии с принципами КАТЕГОРИЙНОГО подхода к управлению ассортиментом. А это мало того что модно ещё и очень эффективно.
По Дефектуре — ну ОООООчень долго формируется. ( Активная номенклатура около 6000 позиций. Емкость справочника в целом — от 8 до 12 тыс.)
А в целом ещё раз СПАСИБО. Реально ПОЛЕЗНЫЕ и РАБОЧИЕ обработки.
(11)Спасибо за развернутый комментарий.
То, что дефектура долго формируется, так это Вы еще не видели, как у нас дефектура-заказ формируется. Вот это — долго 😀
А вообще стоит подумать над тем, чтобы добавить «галочку» — выводить последние даты продаж и закупки. Без них быстрее будет.
PS: «Злые вы», ну что вам стоит задавать вопросы на форуме разработчика, вот хочется гонять его и туда, и сюда 🙂
>>В противном случае — при несоответствии рейтинга количеству скачиваний — доступ к обработке будет ограничен.
А что, если я скачал, а оказалась фигня, то я тоже должен «+» ставить?
При подготовке отчета вылезла вот такая штука:
Несоответствие между выходными данными — ни выручка, ни прибыль, ни тем более наценка
(14)
1. mxl-ки не скачиваются почему-то.
2. Отчёт формируется по регистру «ПартииНаличие», из продаж вычитаются возвраты, коды операций продажи «Реализация», «Реализация (розница)», «Реализация (ЕНВД)», коды операций возврата «Возврат от покупателя», «Возврат от покупателя (ЕНВД)». Ищите, где могут быть расхождения с Вашим отчётом.
3. Лучше спрашивать на форуме разработчика, там быстрее увидят Ваш вопрос.
Почему в отчете указывается отрицательная выручка. Насколько я понимаю, выручка это ни что иное как оборот, т.е. доход с продажи ТМЦ, который всегда >= 0.
Прям то, что требовал начальник! Благодарю!
Супер!! 😀 Благодарю!!
Отличный отчет, спасибо!
Вам спасибо 🙂
Группируется ли номенклатура при добавлении других параметров детализации отчета?
По-моему еще не хватает итого количества. Хотелось бы протестировать, жалко $m не достаточно.
Как-то не очень понятно, что это за отчет и как он работает???
Точнее сама идея-то очень хорошая, а вот реализация, мягко говоря, оставляет желать лучшего.
Простой тест.
Открываем типовую Торговлю и склад 9.2 Демо.
Открываем стандартный отчет по продажам ТМЦ, выбираем фирма — Торговый дом «Комплексный» (Магазин), в поле ТМЦ выбираем группу Бытовая техника, ставим период с 01.01.07 по 07.05.09 и нажимаем сформировать.
Получаем данные:
Поступление = 204’342.28руб.
Реализация = 230’169.13руб.
Прибыль процент = 12.64%
Прибыль сумма = 25’826.85руб.
Теперь открываем этот супер Анализ продаж и формируем по тем же параметрам.
Получаем данные:
Выручка: 194’188.16руб.
Прибыль: -10’154.12руб.
Наценка, %: -4.969
И что это за фигня? Что за прибыль такая?
Это при проверке на типовой ТиС 9.2 релиз 980.
На рабочей базе тоже самое. Вообще какие-то непонятные данные. Откуда он их берет?
Не верно считает и везде расхождения с типовым отчетом по продажам.
P.S. Автор, прежде чем брать стартмани нужно сделать рабочий отчет, проверить его и написать как он работает. И скриншоты информативные добавить.
Пока БОЛЬШОЙ МИНУС!