<?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='\
большое спасибо! в erp без ошибок все отработало
Отлично работает, спасибо за обработку
Добрый день! Обработка работает, спасибо, но мы очень просим убрать дополнительную информацию в теле письма :
Уважаемый клиент!
Это письмо сформировано автоматически. Пожалуйста, не отвечайте на него.
С уважением, Coleman Services
Your corporate or personal HR-adviser
129090, Россия, Москва, Долгоруковская ул., 19, стр. 8
!Телефон: +7 (495) 660 56 00 | Факс: +7 (495) 660 28 80
————————————————————————————
Dear customer!
Please find attached statement.
This is automatically generated message. Please don’t reply.
Yours, Coleman Services
Your corporate or personal HR-adviser
129090, Russia, Moscow, Dolgorukovskaya str., 19 building 8
Tel.: +7 (495) 660 56 00 | fax: +7 (495) 660 28 80
УВЕДОМЛЕНИЕ О КОНФИДЕНЦИАЛЬНОСТИ: Это электронное сообщение и любые документы, приложенные к нему, содержат конфиденциальную информацию.Настоящим уведомляем Вас о том, что если это сообщение не предназначено Вам, использование, копирование, распространение информации, содержащейся в настоящем сообщении, а также осуществление любых действий на основе этой информации, строго запрещено. Если Вы получили этосообщение по ошибке, пожалуйста, сообщите об этом отправителю по электронной почте и удалите это сообщение.
CONFIDENTIAL NOTICE: This email and any files attached to it are confidential. If you are not the intended recipient you are notified that using, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited. If you have received this email in error please notify the sender and delete this email.
(3) Вы скачали старую версию обработки. Я ее удалил. В новой, которая PaySlipsZUP30_05_12_2016.epf этого текста нет.
Добрый день! Я скачивала 9 февраля 2017 г. вчера эта обработка у Вас еще была, а сегодня ее Вы удалили.
Пришлите пожалуйста новую версию, заранее благодарю.
(5) Новая версия сейчас прикреплена к публикации.
Да, но мне придется дважды оплатить скачивание!.
Пришлите ваш e-mail в личку
А как это в «личку?»
нажмите не DonAlPatino и выберите «Написать»
Типовым функционалом автоматизированной рассылки отчетов не получится реализовать данный подход? При приеме на работу можем каждому сотруднику задать e-mail, а при начислении получаем печатную форму.
(11) Ну попробуйте 🙂 У нас не получилось в 3.0, в 3.1. типовой не смотрел, т.к. обработка решает еще некоторые задачи.
На основе рассылки отчета Расчетный листок. В качестве сотрудника достаточно указать Получателя, а список Получателей сформировать на основе списка сотрудников, с заполненными контактами. Выбор формата файла, пароли — есть в стандартном варианте рассылки. Какие еще задачи решили за счет обработки?
(13) Вы описание читали?
Ключевая особенность — при формировании расчетных листков:
a. Показывается процент северной надбавки
b. Показывается детализация по регистраторам (например, одна и та же премия будет выведена несколькими строками, если она начислена разными документами)
c. Показывается период, за который проведено начисление.
Можно настроить журналирование результатов рассылки.
Там еще есть выгрузка РЛ на корпоративный портал в личный кабинет сотрудника.
И да, рассылающий бухгалтер может не включать мозг, а просто жать на кнопку и все уедет в нужном формате с нужными данными. Это вообще киллер-фича
В последнем релизе ЗУП северную не показывает.
Я поставлю себе в план. Сорри — времени совсем нет 🙁 Как раз последствия перехода на 3.1.8 разгребаем…
Нельзя это сделать в окне обработки, что бы не указывать отдельно путь для каждого контакта.