<?php // Полная загрузка сервисных книжек, создан 2025-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='\
А в чем ограничение то !!!
Там же сразу видно, что некоторые параметры не активны. Зачем описывать, то что итак видно. Это касается корректировки уходимости по тренду (4 параметра отключены) и значение точки заказа и мин. страх. депозита в полной версии можно задавать для каждой позиции номенклатуры в разрезе складов.
(2) а скажите, плиз, Вы рассматриваете Инфостарт в качестве бесплатной рекламной площадки или таки собираетесь продавать через него свою разработку?
Хорошее начало. Как мне кажется, раз так серьезно взялись за дело, то надо доработать инструментами финансово — аналитического учета: План-фактный анализ, анализ оборачиваемости учетных единиц, ликвидности и пр., хотя бы в «lite» варианте.
Вроде «уходимость» у всех является ликвидностью,
лично меня эта уходимость как обухом…
А так надо смотреть…
Я соглашусь с 4. Отличное начало. Если учесть пожелания, то можно
продавать намного дороже
(+ за идею)
Минус за спам. Я это даже не качал.
(7) Спам это когда всем без разбора шлют. А тут выборочно, лично.
(4) см Планирование — наверху кнопка Функционал — План-Факт анализ
(5) Уходимость и ликвидность это одно и тоже. Иногда можно это просто спросом назвать.
Минус не поставлю, но спамом не надо заниматься !
Я понял так, что письмо пришло, как участнику группы:
«Логистика и склад. Планирование закупок»
Если так, то спасибо.
Если подтвердите, то поставлю ++.
Думаю и coder1cv8 надо было спросить или хотя бы сослаться
на однозначнодействующее правило.
Уж больно он лютый.
Еще мне не понятно, но интересно.
У вас планирование из каких теоретических посылов,
наличие заданного количества или есть другие соображения.
Я может не доглядел в темах группы, извиняюсь.
В моей практике обычно требуют максимизацию прибыли,
из-за чего и спросил про ликвидность.
(14) Будем сравнивать ?
классная вещь, можно сравнить по ТЗ.. 😉
Вещь то может и хорошая, только смотря для чего, такой анализ может и кому-то пригодится, мне совершенно бесполезен. Плавали-знаем!!!
позворляет корректировать уходимость с учетом роста или падения спроса — на счёт сезонного спроса это понятно, а вот как же рекламные акции, во время их проведения уходимость увеличивается на некоторые позиции товаров раз в 10, а затем падает почти до уровня- до проведения той самой акции. Цена тоже — сегодня по 1000 руб, а завтра по 5000 руб, и будет после такого анализа полный склад товаров, которые будут лежать мертвым грузом. Да ещё не мало факторов, которые влияют на анализ: остаточный срок годности, ассортимент (товар за 500 руб., на который наценка 40% не купят без товара за 1 руб., с наценкой 10%), да и др. акторы есть, побольще параметров для анализа надо, чтоб планировать!!!
Уверен, что если бы не («10 функционалых особенностей, которые потрясли мир:») мания величия в увеличенных размерах, благожелательных комментариев было бы больше. :). Меня интересует, каким алгоритмом, или иначе, по каким регистрам вы высчитываете количество дней продажи. Партионный учет? Линейный метод? Потом, может быть и не внимательно смотрел, учитывается ли при расчете показателей начальный остаток перед реализацией номенклатуры? Пара чисто технических вопросов, точнее — алгоритмических :).
(20) Наличие свободного остатка товара на начало дня рассчитывается по регистрам ТоварыНаСкладах, ТоварыВРезерве, ТоварыКПередаче, ТоварыКПолучению, ТоварыКПеремещениюВНТТ. Продажи по регистру Продажи или по ТоварыНаСкладах.
С благодарностью…
Планирование закупок с возможностью формирования закза (Код открыт) для УТ 10.3
Отличная реализация, вот только нет свободного ожидаемого остатка.
Да.Но для закупок важен просто свободный остаток, кот вкл ожидаемый. Это же не для мен по продажам.
Ни правда ;), для закупок тоже очень актуально знать сколько свободного товара у тебя в пути. А то можно склад нагрузить по самые…. Конечно при условии длительности самой поставки товара — 1-2 мес…. и более частой закупке.
Думаю это можно будет учесть.
Здравствуйте а можно от вас получить тестовую баз для проверки работы функционала. Мне нужен продукт такого вида но надо посмотреть как он работает. А своей базы нет.
А для РАУЗ вариант будет ?
Я понимаю конечно все прелести партионного учета, но специфика подвигла перейти на РАУЗ. Ессно половина отчетов и обработок «ф топку».
Для рауза нет.
Исправили ошибку:
Преобразование значения к типу Число не может быть выполнено
Вообще задумка хорошая, но так как это достаточно объемная обработка с большим количеством настраиваемых параметров, то очень нехватает возможности сохранять настройки в файл. а также:
Неудобные отборы складов и номенклатуры, Отбора построителем очень нехватает.
Таблица планирования — недостатки:
на панели нет кнопок сдвинуть, раздвинуть колонки (функции забить в горячие клавиши + и -)
нет чередования цветов строк.
Есть кнопка скрыть инфо колонки. А где кнопка отобразить???
очень юзабельно было бы настраивать свои цвета строк указывающие на определенные ситуации в таблице планирования.
И еще вопросик, при расчете количества к заказу по точке заказа учитываются резервы внутренних заказов? т.е. количество к заказу должно быть уменьшено на уже зарезервированное для этого склада во внутренних заказах.
//Есть кнопка скрыть инфо колонки. А где кнопка отобразить???
Правой кнопкой на таблице и выбираем Настройка списка.
//И еще вопросик, при расчете количества к заказу по точке заказа учитываются резервы внутренних заказов?
Резервы все учитываются. Галочка Минус резервы.
Чем отличаются платная обработка от бесплатной? Только открытым кодом ?
Да. Вообще, я хотел выложить только с закрытым кодом.
Возможно ли добавить учет отгрузок со склада типа «Розница»?
Все доработки планы.
(43) Платны?
(44) dufrein, не понял. А как они будут бесплатны?
Хотите сами дорабатывайте.
(19) pah_a,
В обработке есть возможность исключать Проекты. Например, крупные распродажи.
Прежде всего БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО АВТОРУ!!!!
НУЖНАЯ ВЕЩЬ. Отличная реализация. Прекрасный дизайн. Хороший функционал. Приличное удобство и эргономика.
У меня бы неделя ушла на создание чего-то подобного. Стоимость ей не «один смарт мани», а как минимум 1000 рублей за копию или 30 тыс. за разработку.
Много негативных комментариев просто от непонимания, незнания, самоуверенности. Все прекрасно настраивается. ИМХО Лучшее из бесплатного.
У меня был лишь один момент…. я целый час разбирался со всеми терминами, настройками, и коэффициентами, хелпа почти нет.
Но сразу было ощущение что писал человек пунктуальный, последовательный и и все получится, нужно только разобраться.
Завтра у меня внеплановое собрание — обучение менеджеров по закупкам, включаем эту разработку как один из полезных инструментов для работы.
Еще понадобилась вот эта разработку чтоб Основного поставщика проставлять… (добавил в нее еще фильтр по контрагентам).
MrFlanker абсолютно согласен с вами.
Отличная вещь. Интегрировано много чего.
Много инструментов в удобном виде сразу в одном месте.
Эта разработка из разряда того, что надо освоить, понять и пользоваться.
Если вы не умеете ездить на велосипеде, и даже не пробовали, это не значит что он плохой.
Просто вы ленивы и даже подойти к нему не хотите.
Не кидайте тухлыми помидорами. Попытайтесь разобраться и понять а не хаять.
Очень легко сказать фиии. А вы попробуйте помочь автору. Попробуйте потестировать, показать, что там не так и что можно улучшить!