<?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='\
Спасибо. Полезный отчетик.
Спасибо.
спасибо пригодилось ставлю плюс
А что делать, если исчисленный не равен удержанному? А в начале года из-за различных причин это было сплошь и рядом?
Спасибо! попробую запустить в КА
(4) 105raz, надо проанализировать по какой причине и в случае необходимости произвести корректировку.
(4) 105raz, у нас не так много ( 2 чела). Им была начислена ЗП, в следующем месяце она же пересчитана с «-«.
Но и не выплачена. 1С посчитала сумму НДФЛ для перечисления в бюджет больше. Хотя исчисленная сумма налога правильная. Это видно из справки НДФЛ по сотруднику и в отчете анализ налогов (НДФЛ).
Я сделал корректировку НДФЛ (по вкладке НДФЛ удержанный) — поставил сумму с «-» на тот период где был перерасчет ЗП.
Т.о. сумма для перечисления в бюджет уменьшилась и стала раной начисленному НДФЛ. В справке 2НДФЛ тоже все ОК.
Видимо сума для перечисления в НДФЛ меняется (пересчитывается)только при выплате сотруднику.
(6)
анализировали. Все правильно — в январе принесли больничный за декабрь. Зарплату строрнировали, пересчитали, часть НДФЛ «ушла» в прошлый год. Что вы предлагаете корректировать у сотни сотрудников?
(8) 105raz, я высказал только свое предложение. Решение за вами как вы будете отчитываться перед УФНС.
Распределение взносов уплаченных началось с 01.01.2011 года. Отчетность за 2010 год нужно было скорректировать в том же январе. Излишне уплаченный НДФЛ по вашему заявлению УФНС мог бы и может вернуть.
И по поводу больничного — правила такие. Если человек отсутствует на рабочем месте, то ему в табеле ставиться отсутствие по неизвестной причине (даже если вы знаете, что он на больничном — он вам позвонил),Можно поставить и больничный. Но оплачиваться в декабре должны били только отработанные дни. Больничный же вы могли начислить и январем — со всеми налогами в январе. В таком случае вам пересчитывать ни чего бы не пришлось.
Что я попробовал и сделать: Поставил невыход сотруднику по болезни с 10 ноября. В декабре он приносит больничный с 10 по 30 ноября. Но зарплата за ноябрь уже закрыта — плата ему была по табелю с 01 по 09 ноября. Начиляю больничный за ноябрь в декабре — сумма НДФЛ садиться на декабрь при расчета декабрьского начисления всей ЗП по нему.
Спасибо. Как раз собиралась писать такой отчет! )))
Пожалуйста. Приятно, если кому-то помогло.
Не забывайте ставить плюсы на звездочке — так в двойне приятнее 😉
(9)
В конкретно этом случае речь идет о бюджетной организации. Зарплату за декабрь они обязаны выплатить до нового года. С учетом их специфики, дней за десять они должны подать заявку на требуемые деньги. Соответственно, саму зарплату приходиться начинать считать числа 15 декабря. Те отклонения от рабочего графика, что случились после, понятно, уже не учитываются. Сведения о них поступают расчетчикам уже в середине января. Это я к тому, что поставить «невыходы» заболевшим — не получается. Та же ситуация и с командировками — их оплачивают только по факту прибытия, это жесткая позиция руководства. Собсбвенно, и программу эту взяли для автоматизации только потому, что она позволяет сторнировать начисления прошлых периодов.
(12) 105raz, предварительно заказали, а дальше то месяц довести правильно нужно. Проконсультировался у главбухов работающих в бюджете. Так и делают — предварительно считают, а за 3 дня пересчитывают. У них ни каких проблем — ни со сдачей отчетности в бюджет, ни с бухгалтерской в вышестоящую — ни каких корректировок.
И вам сочувствую- у всех своя специфика в организации работы.
удобная штука, спасибо
Очень хороший отчетик.. Только теперь надо придумать как скорректировать все плюсы и минусы
интересный отчет, а для ЗБУ подойдет?
(16) Valdis_KH, Не знаю, попробуйте — может пойдет.
(15) Ledybird, мы вручную делали -перекидывали уплату с одного на другого сотрудника. И выравнивали суммы по уволенным.
может на ящик скинешь,а то $m не хватает, проверить надо. + поставил krot2906@rambler.ru
(19) Valdis_KH, отправил
Отчетик хороший, но я делаю в произвольном отчете, результат такой же.
спасибо
(21) Den_Zenit, такой то же есть — попросили сделать как внешний
Как не корректно раскладывает по подразделению и окато
(24) AB3012,
Что значит, некорректно раскладывает?
(13) Никак не получится без корректировок. Во-первых, начислить зарплату в декабре нужно, как минимум за 2 рабочих дня до конца месяца, чтобы на следующий день отправить платежку и список на зачисление в банк и там этот список обработали, а для тех у кого есть работники которые получают зарплату через кассу и того ранее чтобы у сотрудников было 3 дня на получение зарплаты. Т.е. сотрудник может заболеть числа 28, а зарплата к этому времени уже начислена. Во-вторых, если организация большая, сведения об отсутствии работника не всегда доводятся до бухгалтерии в тот-же день.
Спасибо. Актуально.
Неплохо, спасибо! 🙂
ммм то что искала, спасибо
удобно для проверки, в УПП тож работает, спасибо
сформировала отчет, по каждому сотруднику вылезла разница, хотя в спрвке 2-ндфл разницы между удержанным и перечисленным налогом нет
(34) Mala2011, скорее всего даты периодов не неверно выставлены. В отчете их два. Дата дата документа- Начало периода(в каком месяце сформирован) и месяц за какой перечислен налог — Месяц налогового периода.
Может у вас дата стоит начала периода 01.01.11 и Конец периода 31.12.11, тогда налоги перечисленные я январе 2012 в отчет не войдут.
см. вложение
В отчете видно все по ФИО и месяцу налогового периода (за какой месяц перечислен НДФЛ).
Думаю, что причину можно найти, почему расхождение.- посмотрите декабрьская уплата стоит ?
Спасибо очень интереснно
В конкретно этом случае речь идет о бюджетной организации. Зарплату за декабрь они обязаны выплатить до нового года. С учетом их специфики, дней за десять они должны подать заявку на требуемые деньги. Соответственно, саму зарплату приходиться начинать считать числа 15 декабря. Те отклонения от рабочего графика, что случились после, понятно, уже не учитываются. Сведения о них поступают расчетчикам уже в середине января. Это я к тому, что поставить «невыходы» заболевшим — не получается. Та же ситуация и с командировками — их оплачивают только по факту прибытия, это жесткая позиция руководства. Собсбвенно, и программу эту взяли для автоматизации только потому, что она позволяет сторнировать начисления прошлых периодов.
Спасибо, очень нужный и полезный отчет.
Так вот ваш переделанный отчет как внешний. Спасибо! Так гораздо лучше. Тем я сразу и не разобрала как пользоваться!
Вроде в консоли проще сваять, чем хранить внешний
спасибо — Бухгалтер в экстазе
Заберу и этот, в периоды проверки всякие разрезы хороши. Спасибо!