<?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='\
На картинках выглядит «вкусно» 🙂
Один вопрос. Все картинки — с распределением по «начисленному НДФЛ», а не по методологически-правильному «удержанному». Вы тоже не верите в то, что ЗиК-овскому «удержанному» можно доверять ?
(2) Ну… Я правильно понял, что это риторический вопрос?
Ну а вообще я специально добавил и тот и другой вариант. Просто начисленный НДФЛ расчетчики, еще как-то, могут разглядеть стандартными отчетами, а вот с удержанным все гораздо сложнее.
по описанию хорошая разработка, спасибо автору
Надо попробовать.. по описанию хороша обработка, наглядная
(4) Так ведь и старался чтоб была наглядная 🙂
Изначально просто стояла задача показать когда за какой месяц были оплаты, а потом… нашла муза, а может еще это прикрутить, а это добавить, и тут расшифровку не забыть — данные ведь есть… Вот и выродилось. Давно заметил, что когда нет принуждения и есть свободное время то можно много чего вкусного вкрутить 🙂
Добрый вечер, идея хорошая. А вычеты сотрудников учтены?? Многие пытались сделать обработки, только про вычеты забыли. Было бы не плохо видеть сколько вычетов предоставлено. Есть не плохие обработки про вычеты, только не все виды предоставленных вычетов опять же учтены. Все циклятся на стандартных вычетах и забывают про другие.
(6) а какой смысл тут показывать вычеты???
Тут нет базы по НДФЛ в привычном понимании слова (начисления), тут база имеется виду совокупный налог берется из начисленного удержанного НДФЛ. Все. Вычет уже давно учтены при расчете НДФЛ начисленного.
На первый взгляд, очень здорово! Просто и наглядно! Все другие обработки просто меркнут. Действительно человек постарался. Спасибо, обязательно скачаю!
Знаете, а мне кажется, что вычеты в этом отчете не к чему. Здесь отражен готовый НДФЛ, уже расчитанный. Казалось бы очень простой отчет, но никто такой не придумал. Спасибо автору!
Спасибо! Очень часто бывают ситуации
Знаете, попробовала отчет за 2011 год. Проверила некоторые суммы, но в декабре у нас было несколько перечислений, отпускные, премии разные. Почему-то взялось только одно последнее перечисление 30.12.2011. До него были другие перечисления и 30.12.2011 и раньше в течение всего месяца. Всего 6 раз. А учлось только одно, последнее. Остальные перечисления ушли в остаток…Проверила два других месяца, все нормально. Только в декабре…
Поставила конечную дату не 31.12.2011, а 30.12.2011. Вообще не взялась ни одна сумма перечислений. Весь НДФЛ начисленный ушел в остаток. А несколько перечислений было именно 30.12.2011.
(12) хм… посмотрю… Таких проблем не было…
(12) поправил и обновил, добавил возможность выбора что считать периодом оплаты (раньше это была дата документа) сейчас еще добавил Дату платежа и дату платежного порученияы
Возможно причина была именно в этом? что документы в декабре у вас имели дату документа иную, хотя они так или иначе должны били быть отражены тут, даже если бы они были проведены хоть в 2015 году.
Гадать мне сложно, была бы база под рукой сказал бы в чем проблема, а так…
У меня перебираются все документы оплаты:
исключаются из анализа только:
1) Не проведенные
2) Не попадающие в период указанный в отчете (реквизит документа: Дата платежа … за [период оплаты])
3) Если сумма перечисленного налога в документе = 0
4) Если ОКАТО/КПП не попадает в фильтр указанный в отчете
Все остальное должно быть отражено в отчете. Еще раз проверьте…
Если не получиться дайте скрин документа который не попадает (Список сотрудников закрасьте).
Судя по скринам, очень полезная вещь, вот было бы еще для 8.2
Знаете, я совсем не нонимаю, какое значение имеет дата документа, дата оплаты, дата платежки. Нужно брать только месяц, за который поизведена оплата. Все то же самое. Ничего не изменилось.
Меняла все даты. Даже поставила 30.12.2011. И только сейчас обнаружила, что общий итог по ОКАТО/КПП сверху — правильный. Все перечисленные суммы декабря вошли в него. А когда идет помесячная расшифровка — декабрьские перечисления потеряны.
Спасибо Вам за участие. Я попробую сама разобраться в обработке. Только позже. Сейчас совершенно нет вренмеи.
Может это только у меня так, больше ни у кого. Если я разберусь, обязательно Вам сообщу причину. Еще раз, большое Вам спасибо!
(18) ОК, буду надеяться все у вас получиться.
Большое спасибо =) будем время от времени пользоваться 😉
А для Комплексной обработку кто нибудь пробовал?Работает?
(21) Если виды расчетов и документ имеют одинаковый идентификатор, а так же реквизиты документа, а это насколько я понимаю, так и должно быть, то должно работать :)))
Пока посмотрела только скрины и прочитала комментарии из которых следует, что программа неплохая. Мне же понравилось, что есть расшифровки, по которым легче работать. Большое спасибо
Сталкнулась с тем, что итоги по оплате выводит правильно, а в колонках по месяцам сумм нет.
Еще раз запустила программу и все данные появились.
(25) Надеюсь все правильно и хорошо 🙂
Спасибо за обработку, однозначно (+). Скачала, проверила. Пока визуально один недочет: обработка не видит уплату НДФЛ по договорникам, наверное у вас их нет, не было возможности их проверить и учесть. В итого все суммы НДФЛ договорников, отражаются на остатке, хотя документы перечисления на них введены.
(27) Да, действительно про них забыл 🙁
Постараюсь в течении дня скорректировать 🙂
Спасибо, за помощь 🙂
(27) Нашел таки время посмотреть работу отчета с договорниками. У меня все нормально работает, проверил на 3-х договорниках. Специально все проверил, дополнительных фильтров ни где не стоит. Перебираются все записи по ЖР и все документы, и если договорник проходит хотя бы по ЖР, то в отчет он обязан попасть
Отличный отчет мне очень нрвитсяочень выручает при споре с бухами
Всё супер, сделано качественно.
Имхо, ссылку на такую работу можно даже добавить в своё резюме.
Только поправь пожалуйста грамматику в заголовках колонок (и на рисунках тоже, люди ведь в первую очередь рисунки смотрят, и решают, скачивать или нет).
(31) Спасибо! Поправлю 🙂
Замечательная разработка 🙂
СПАСИБО ОГРОМНОЕ за обработку очень очень помогла!УРА!
Странно, по какой-то причине в данном отчете сумма начисленного НДФЛ ( разрезе КПП/ОКАТО)показывает не верные суммы, исходя из чего не правильно формирует документы Перечисление НДФЛ в бюджет…
(35) Я данные суммы беру напрямую из журнала расчетов. Все зависит от базы. Но сколько не проверял все было верно. Можно по точнее?
Если формируешь 2-ндфл для ИФНС в разрезе ОКАТО/КПП, то там в реестре есть сумма начисленного НДФЛ, которая не совпадает с данным отчетом.
(37) Надо разбираться конкретно на вашем примере. Пока сходу может прийти только одна мысль, это скорее всего сотрудник сменивший статус не резидента, и по нему справка 2-ндфл перерассчитывает сумму налога, при формировании справки, а мой отчет берет данные по факту расчета в журнале расчетов. Но для точности, надо базу и посмотреть почему в вашем случае есть расхождения.
Интересная идея
(38)Для УПП подойдет ваш отчет?
(41) — Нет, от для 7.7