Контроль удержанного и перечисленного НДФЛ (по срокам перечисления, в соответствии с 6-НДФЛ). Бухгалтерия 3.0 и ЗУП 2.5 и ЗКБУ 1.0.91 и ЗУП 3.0




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

41 Comments

  1. user_2010

    По сути, формируя отчет за 1 месяц — на конец месяца — у нас не должно быть никаких отклонений.

    Плохо: хоть переплата, хоть недоплата. Если есть переплата — налоговая эти суммы не считает налогом и в дальнейшем может их не учесть, а потом и наказать…

    Если есть недоплата — то это точно сразу штраф, пени…

    Согласны? Я правильно мыслю?

    Reply
  2. vadim1011985

    Смотря в как смотреть переплату и недоплату у нас по НДФЛ все таки налоговый период год , Не должно быть переплат и не доплат после закрытия года. Точнее до конца марта недоплата может еще быть (хвосты). А если на конец года переплата -то да это уже не считается налогом . Я так думаю . И большинство моих клиентов так же склоняются к этому мнению. Я бы предложил смотреть недоплату и переплату в разрезе месяцев налогового периода , вот по месяцам налогового периода должно все ровно закрываться

    Reply
  3. user_2010

    (2) vadim1011985, контроль в разрезе месяцев налогового периода — это скорее всего просто анализ регистра Расчеты налоговых агентов с бюджетом по НДФЛ.

    И этот контроль не поможет нам понять — верно ли мы платили и не накажут ли нас после сдачи 6-НДФЛ.

    Ведь смысл 6-НДФЛ — контролировать СРОКИ УПЛАТЫ НДФЛ — имхо…. иначе бы для чего вводилась эта отчетность.

    Вот я и хочу сделать отчет — который проверит наши данные так — как это сделает налоговая после сдачи наших 6-НДФЛ.

    Reply
  4. ludmila-chern@yandex.ru

    очень удобный отчет, а можно ли его сделать для ЗКБУ 1.0?

    Reply
  5. vadim1011985

    (3) тогда я бы показывал бы не только сумму оплаты , но и срок планируемой и фактической оплаты по каждому удержанию тогда это больше подходит по смыслу отчета контроль сроков уплаты.

    Все я увидел на других скринах эти даты

    Reply
  6. user_2010

    (4) ludmila-chern@yandex.ru, попробую сделать…

    Людмила! сейчас проверила у себя на тестовой базе ЗКБУ 1.0.91.1 — отчет работает.

    Но в тестовой базе данных очень мало… если может кто-то проверить на своей реальной базе ЗКБУ 1.0.91.1 — отпишитесь, плз!

    Reply
  7. user_2010

    Сейчас с расчетчиками протестировали отчет! могу сказать — очень полезно и, в принципе, удобно! сразу нашли ошибки — исправили, часть переплат/недоплат — поняли почему они возникают, и остались вопросы по долгам — будут смотреть — почему они перечислили меньше, чем положено….

    По поводу недоплат и переплат в отчете — поясню такую ситуацию:

    11/01/2016 перечисляем зарплату, часть сумм = зарплата, и часть сумм отпускные и больничные.

    Например, всего с перечисленной зарплаты удержали НДФЛ = 1000, из них 300 рублей — с отпускных и больничных, 700 рублей с зарплаты

    в результате имеем два крайних срока перечисления НДФЛ:

    12/01/2016 сумма удержанного НДФЛ 700

    31/01/2016 сумма удержанного НДФЛ 300

    (так и будет в отчете)

    Но! заплатить мы можем сразу всю сумму, например, 12/01/2016, — имеем право!

    И тогда будем иметь такой отчет: переплатой и недоплатой, но в целом отклонение = 0.

    12/01/2016 сумма удержанного НДФЛ 700, сумма перечисленного НДФЛ 1000, отклонение -300, переплата 300

    31/01/2016 сумма удержанного НДФЛ 300, сумма перечисленного НДФЛ 0, отклонение +300, недоплата 300

    Итого за январь — все хорошо.

    Вот не смогла я придумать — как сделать отчет — чтобы он и такие моменты контролировал…

    Получилось сделать только по крайним срокам…

    Reply
  8. user_2010

    и еще одно замечание: данные по перечисленному НДФЛ собираются по данным документов «Перечисление НДФЛ в бюджет РФ», НО!!!! дата перечисления берется в отчет из поля «Дата платежного поручения» — потому как могут забыть установить дату документа, равной дате перечисления НДФЛ, а вот поля «Платежное поручение номер» и «Платежное поручение дата» — должны точно верно указать — они не заполняются автоматически, их берут из Бухгалтерии и, думаю, вводят эти данные осознанно ответственно и верно!

    Reply
  9. user_2010

    И еще — пока сверяли, обнаружили ситуацию, когда крайний срок перечисления НДФЛ приходится на выходной, тогда бухгалтера перечисляют в следующий понедельник, т.е. фактически позже крайнего срока…

    Что в законах говорится про выходные при определении срока уплаты?

    Reply
  10. vadim1011985

    (9) Я думаю что это как и отчетность если день сдачи попадает на выходной то его переносят на след. возможный день уплаты. можно программно определять дата выплаты попадает на выходной или нет (и соответственно продлевать на 1 или 2 дня )

    Reply
  11. user_2010

    (10) vadim1011985, да, можно сделать…

    поищу законы…

    Reply
  12. vadim1011985

    (11) 136 ТК РФ — При совпадении дня выплаты с выходным или нерабочим праздничным днем выплата заработной платы производится накануне этого дня.

    Reply
  13. user_2010

    нашла http://www.glavbukh.ru/hl/140743-razdel-2-v-6-ndfl-po-otpusknym

    Дата фактического получения дохода – 14.01.2016

    Дата удержания налога – 14.01.2016

    Срок перечисления налога – 01.02.2016 (т.к. согласно п.7 ст. 6.1 в случаях, когда последний день срока приходится на выходной, днем окончания срока считается ближайший рабочий день).

    Значит надо попытаться перенести с выходных дней на ближйший рабочий…

    Reply
  14. user_2010

    хм… а ведь в 6-НДФЛ в данный момент срок уплаты считается без учета выходных дней???

    Reply
  15. user_2010

    Добавила отчет для ЗУП 2.5 — с переносом крайнего срока уплаты с выходного дня на следующий ближайший рабочий день в соответствии с производственным календарем.

    Для проверки сроков уплаты — он подходит больше, так как реально бухгалтера могут уплачивать НДФЛ в следующий ближайший рабочий день (за выходным) и это не будет являться нарушением законодательства.

    В маленьких организациях — все хорошо видно и легко свести… А вот с крупными…. там черт ногу сломит… но разбираться надо! по каждому движению, друг за другом…\r

    Но, сначала мы все свели в отчете http://infostart.ru/public/484446/ , а потом уже приступаем в этому отчету.

    И еще: порядок также желателен и в регистре накопления «Расчеты налоговых агентом по НДФЛ», но и без него отчет должен корректно формироваться.

    Reply
  16. user_2010

    Добавила отчет для ЗУП 3.0 — без переноса выходных дней. Тестировала на своей учебной маленькой базе… поэтому какие-нибудь нюансы могла не учесть… пишите! Все учтем и поправим!

    Reply
  17. ivnik

    А нельзя сделать универсально? Например, ставим «галочку» Перенос выходных дней, а без «галочки» — значит без переноса. Можно даже еще одну сделать: «До выходных» — «После выходных».

    Reply
  18. user_2010

    (17) ivnik, хотела сразу сделать оба варианта в одном отчете… но как-то сразу не получилось скрестить…. а нужно было быстро до отпуска своим расчетчикам дать почву под ногами и план действий…

    Reply
  19. chmv

    хотелось бы по обосбленным подразделениям

    Reply
  20. user_2010

    (19) chmv, смогу сделать только после 20 апреля…

    Reply
  21. user_2010

    Внимание!!! Версия 2.5.103.2.

    Смотрю отчет — и вижу, что верхняя таблица неверна — не попадают часть строк из второй таблицы…

    смотрю регистр «НДФЛРасчетыСБюджетом»… его, конечно. изменили… писали, что добавили поле Крайний срок уплаты — его заполняют с учетом выходных…

    Попробую разобраться — почему сейчас отчет так формируется, переделать отчет — использовать теперь их поле…

    Reply
  22. user_2010

    (21) на смену сломавшемуся отчету для ЗУП 2.5 с переносом выходных дней («Контроль перечисления НДФЛ по срокам уплаты. ЗУП 2.5 и ЗКБУ 1.0.91 (с переносом выходных дней)» (!!! сломался с версии 2.5.103..)) разработан новый отчет «Контроль перечисления НДФЛ по срокам уплаты. для ЗУП с 2.5.103.. и ЗКБУ с 1.0.95.».

    В версии 2.5.103.2 в регистр накопления НДФЛРасчетыСБюджетом разработчики добавили поле КрайнийСрокУплаты — в виде даты, раньше такого поля не было и его необходимо было вычислить в отчете… (возможно это поле добавили еще в релизе 2,5,102…). Разработчики успели уже поправить заполнение этого поля с учетом выходных дней дней.

    Разработанный отчет использует это поле КрайнийСрокУплаты в качестве крайнего срока уплаты. Пользуйтесь этим отчетом!

    Отчет «Контроль перечисления НДФЛ по срокам уплаты. ЗУП 2.5 и ЗКБУ 1.0.91» — теперь тоже не актуален.

    Reply
  23. user_2010

    (22) Всем скачавшим прежние версии отчетов для ЗУП 2.5 и для ЗКБУ 1.0… — могу выслать новый отчет!

    Reply
  24. Agema

    (23) если не трудно скиньте на почту agema2010@mail.ru

    Reply
  25. user_2010

    (24) Agema, файл отправлен!

    Reply
  26. user_2010

    Смотрела на свой отчет… он нужный, полезный… но чего-то в нем не хватало… для общей картины.

    Поняла — что нужны итоги нарастающим итогом — чтобы увидеть в целом: не доплатили мы, или переплатили — но не знала как реализовать это.

    Теперь это дело я реализовала! Думаю, теперь отчет окончательный!

    Reply
  27. user_2010

    Отчет помогает увидеть потенциальные штрафы: это суммы «недоплат», выделенные красным цветом в колонке «Отклонение» «Недоплата» — эти суммы не всегда являются «недоплатой» — налог может быть перечислен авансом — это будет на усмотрение налоговой — зачтет она перечисленный аванс или нет…

    А также отчет показывает реальные штрафы: это суммы, выделенные красным цветом в колонке «Итого нарастающим итогом» «Недоплата» — это точно «недоплата» и на нее точно будет штраф.

    Конечно, подразумевается, что документы по перечислению НДФЛ введены верно!

    Reply
  28. user_2010

    (27) Увидев эти проблемы — можно 6-НДФЛ «подогнать» так, чтобы «недоплат» не было!

    Либо найти ошибки в данных и исправить их!

    Reply
  29. user_2010

    По мотивам данного отчета разработан еще один похожий отчет: http://infostart.ru/public/539325/ «Контроль данных Раздела 2 регламентированного отчета 6-НДФЛ и фактически перечисленного НДФЛ. ЗУП.2.5.»

    Новый отчет анализирует данные Раздела 2 регламентированного отчета 6-НДФЛ и данные по перечислениям НДФЛ.

    Ведь 6-НДФЛ приходится править руками… и перед отправлением — желательно убедиться, что внесенные нами исправления не испортили «общую картину».

    Reply
  30. nachprod

    (23)

    Как можно получить новую версию? Почта в Вашей личке.

    Reply
  31. nachprod

    Все это конечно хорошо. НО нет разбивки по подразделениям (кодам ИФНС или ОКТМО, КПП), и желательно расшифровка и отбор по физ. лицам, чтобы понять ИТОГОВУЮ разницу по Регистру налогового учета по НДФЛ по каждому сотруднику. Не за горами время когда придется собирать еще 2-НДФЛ. Я понимаю, что цель Вашего отчета несколько иная и ничего универсального нет.

    Reply
  32. user_2010

    (31) nachprod, да, скорее всего нужно сделать отчет с разбивкой по обособленным подразделениям — подумаю над этим.

    Интересует: для какой конфигурации нужен отчет по обособленным подразделениям? У нас нет базы с обособленными подразделениями — поэтому и потребности нет — если появятся желающие для конкретной конфигурации — постараюсь сделать. Еще бы базу с реальными данными…

    Reply
  33. buKIN

    (32) в итоге сделали или нет?

    Reply
  34. user_2010

    (33) buKIN, нет, данный отчет по обособленным подразделениям не делала: нет базы — чтобы тестировать и нет данных чтобы понимать что и как надо… если вам нужен подобный отчет по обособленным подразделениям — могу попробовать сделать — но с вашей стороны нужно конкретизировать некоторые моменты.

    Reply
  35. user_2010

    (33) buKIN, может быть вам будет интересен такой отчет: http://infostart.ru/public/539325/

    в нем анализируются данные готового отчета 6-НДФЛ и своевременность перечисления НДФЛ. По идее этот отчет даже важнее — ведь в налоговую вы отправляете именно эти данные и именно они должны соответствовать перечислениям НДФЛ. И он у вас уже сформирован по обособленным подразделениям.

    Хм… кстати указанный отчет не проверяла на обособленных подразделениях…. надо об этом подумать!

    Reply
  36. buKIN

    (35) посмотрю.

    Reply
  37. user_2010

    (36) buKIN, можете ответить на такой вопрос:

    при наличии обособленных подразделений, отчетность подается в разрезе Организация/КПП? или Организация/ОКТМО?, или Организация/КПП/ОКТМО?

    Reply
  38. user_2010

    (36) buKIN, Добавила отчет с учетом обособленных подразделений ( http://infostart.ru/public/539325/ ) . Обособленное подразделение идентифицируется по ОКТМО и КПП. Надеюсь верно?

    Кто сдает отчетность по обособленным подразделениям — скажите — верно я мыслю?

    Reply
  39. Kaniman

    (38) да верно, http://forum.klerk.ru/printthread.php?t=552298 :

    В ЗУП 2.5 достаточно заполнить в подразделении, которое обособленное, (поставить галку) ОКТМО и КПП и программа сама будет выделять НДФЛ на этот КПП. Просто в справках 2-НДФЛ или анализе налогов указывайте нужные ОКТМО/КПП и старайтесь не переводить в это подразделение и из него сотрудников в середине месяца.
    Reply
  40. user_2010

    (39) Kaniman, спасибо!

    Reply
  41. user611515_akorneev

    (1)

    Плохо: хоть переплата, хоть недоплата. Если есть переплата — налоговая эти суммы не считает налогом и в дальнейшем может их не учесть, а потом и наказать…

    Насколько я понимаю, налоговая просто разносит платежи нарастающим итогом и смотрит «-«. Причем даже без учета года. Проверено на 4 предприятиях.

    Ваш отчет просто берет даты документов?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *