<?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='\
Конфа запаролина. При загрузке предупреждение-«Не могу открыть файл МодулиГлобМодуль.txt». И подобное на большинство модулей документов, справочников и тд. И как что посмотреть?
Полностью согласен с (1). Из того что видно возникают сразу несколько комментариев:
В справочнике товара на карточке присутствуют сразу все реквизиты товара (серии, цены и пр.) Исходя из специфики аптек это около 5000 карточек товара. Кроме того каждый приход будет создавать очевидно новую карточку. Итого при достаточно неплохом обороте аптеки за год справочник товаров разрастется до неимоверных размеров. Как это все будет шевелится? На мой взгляд проще иметь 2 справочника: Товары и подчиненный ему Партии. Кроме того не заметил на карточке товара поля со штрихкодом. Как тогда реализован механизм списания по штрихкоду? Короче много вопросов и нет очевидных ответов 🙁
Извеняюсь, седня все выложу (забыл что у мя все модули внешние)… А по поводу карточек товара, сделано для полность автоматического прихода, поставщики дают эл. наклд. в них нет поля ШК, что и создает трудности… ШК формируется в базе склада а в данную конфу поступает уже с ШК.
Выкладываю архив MD-шник + Модули (md-шник распаралировал, модули посадить в папку с базой).
(4) А ГлобМодуль.txt ?
ВНИМАНИЕ ВСЕМ! нормальное исправление в 4- коментарии выложено! Прямая ссылка
http://infostart.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=94758
15.09.10 8:25 Изменил основной файл : Apt.zip нормальная незапороленная конфа…
мне кажется что и обувь и продукты можно этой конфой продавать
Объясняю почему минус :
1) конечно же главное в аптеке это учет по сериям и срокам годности — что будет с твоей базой если она поработает год ? (хранить такие вещи в справочнике ну ни как не вариант)
2) то что база набросана на скоряк ….
Самое большое время уходит на ПоступлениеТМЦ — однозначно требуется загрузка электронных накладных
3) Что с торговым оборудованием СканерФискальник
Да — в аптеке возврат от Ф/Л запрешены -))
посмешил ГЛМодуль при началеРаботыСистемы
Предупреждение(«Элла Владмировна незабудьте включить сканер. Меню-Сервис-Параметры-Вкладка Сканер Штрих-Кода-Поставить галочку: Включен и нажать ЭНТЕР !!!»);
Справочник СписокЖВ Руками забивают? ООО так он даже ни как не связан с твоим справочником товаров .
Пойми Автор правильно — БРАКУЮ!
В Аптеке еще на мало важно учет в отпускных ценах
Может быть так что один и тот же товар, по одной и той же серии ,от одного и того же поставщика , от разных поступлений по разной цене будет стоить по разному
Можно уточнить — конфигурация делалась для аптеки или для аптечного киоска?
(8-9)Данная конфа пригодна для розничной отдаленной точки — (обработка загрузки накладных об этом говорит), возможности работы с фискальником я не делал т.к. это готовая конфа без наваротов-а унас — у муниципального предприятия нет возможности иметь еще и фискальники… Для загрузки накладных — а это делается на складе, есть загрузка электронных накладных, это примерно 2-2,5 минуты делов вместе с автонаценкой. В данной конфе реализовано только торговля, данные поступают из конфигурации Фармация-Склад, возврат они делать не имеют права, меня интересовало мнение о правильности расхода.
Мне понравилось, для небольшой розничной торговли самый раз.
а какой пароль на вход через администратора?
А штрих кодирование не было прикручено?