Отчет по уплаченным страховым взносам с разбивкой по сотрудникам и отчетным периодам с изменениями 2013 г.




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2018-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='\

19 Comments

  1. GStiv

    А каким образом можно исправить остатки, по отчету посмотрел, некоторые люди не идут с остатками с ПФР, вношу пачку за 2012 год и оплатой корректирую разницу. Отчет показывает корректно. Но при заполнении отчетности за 1 квартал, остатки показывает завышенные. Прошу прощения если не туда написал.

    Reply
  2. nelena

    (1) не совсем поняла вопрос, что значить

    вношу пачку за 2012 год и оплатой корректирую разницу

    . У вас до этого пачки за 2012 г. были или нет

    Reply
  3. GStiv

    Пачки были, вернее полный комплект документов, в него добавляю пачку с оплатой, в АДВ ее добавляю, где по каждому человеку вношу сумму корректировки «+» и «-«, начислениями нельзя корректировать там идет проверка контрольных соотношений. В итоге отчет показывает остатки теже что и ПФР, но при заполнии пачек текущего периода сумма долга по прошлым периодам увеличивается

    Reply
  4. slav_mcu

    nelena, я правильно понимаю, что не учитываются КОРР формы в этом отчете?

    Reply
  5. nelena

    В отчете учитываются из корректировочных форм суммы, указанных в полях в т.ч. доначислено и в т.ч. доуплачено

    Reply
  6. slav_mcu

    Спасибо за отчет. Он хорошо работает и на ЗБУ 1-0-56-1. Только в ЗБУ (благодаря вашему отчету!!) выяснилось, что при загрузке КОРР пачек принятых в ПФ не заполняются поля доначислено и доуплачено, хотя в самих файлах цифры есть.

    Reply
  7. Bruk

    (1) GStiv, Если у вас остатки не идут с ПФР, руками не нужно править, лучше попросите в своем отделении ПФР выгрузить вам данные с начала отчетного периода, и загрузите в 1С. У нас были такие ситуации, после загрузки отчеты сдавали с первого раза.

    Reply
  8. shatt

    Супер! Дорога ложка к обеду!

    Вопрос такой: а какие изменения в законодательстве 2013?

    Почему-то при заполнении комплектов в 1с сумма уплаченных взносов

    НЕ совпадает с суммами введенных документов «Расчеты страховых взносов/уплата»

    в комментариях идет текст, что скорректированы данные прошлого периода

    Что это может значить?

    Reply
  9. slav_mcu

    (8) shatt,

    Если это в ЗИК, то сделайте непроведенными все уплаты кроме уплат 1 кв.2013. Остальные уплаты берутся из принятых и загруженных в ЗИК пачек.

    Reply
  10. revril

    спасибо за отчет!!очень полезен и удобен!!

    бухгалтера довольны,мы спокойны)))

    Reply
  11. Loader_1C

    Спасибо! Ждал как раз, пока будет доработан с учетом изменений законодательства с 2013 г.

    Reply
  12. shatt

    (9) Это Бухгалтерия 2.0

    Но данная методика и там пройдет, думаю.

    Спасибо, буду копать в этом направлении.

    Reply
  13. gradus

    (1)(3) На Ваш вопрос так и не ответили. А ведь он действительно не праздный.

    Есть данный отчет, а так же аналогичный «Отчет Проверка начисленных и уплаченных страховых взносов по сотрудникам с учетом изменений 2013 года на СКД». Я так понимаю, что они оба реализуют собственный алгоритм расчета задолженности/переплаты страховых взносов по людям?

    Однако было бы куда интереснее вывести такой отчет «глазами 1С», т.е. используя алгоритмы и процедуры самой программы. Это позволило бы понять, как видит задолженность сама программа и тогда уже думать как ее корректировать.

    В чем проблема::

    Не во всех отделениях ПФР выдают комплект файлов принятых ими сведений, а лиш ограничиваются распечаткой с фамилиями и суммами задолженностями по уплате. Задача бухгалтера как-то синхронизировать (скорректировать) сведения в программе, чтобы дальше все «пошло». Однако как описано в (1) внесением пачек с суммами оплат за прошлые периоды исправляет только данные этого отчета, а когда заполняешь сведения в ПФР штатными методами, остатки выходят не такие, как в этом отчете, т.е. программа читает их как-то по своему.

    Хотелось бы иметь механизм, позволяющий скорректировать сведения в учете и далее обходиться автоматической функцией (по подготовке сведений в ПФР) программы.

    Все вышесказанное касается программы ЗУП, однако и для БП возможно будет тоже интересно.

    Reply
  14. gala2009

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

    или у тебя пачек прошлогодних вообще не было и вносил сальдо пфр как уплату в пустую пошлогоднюю пачку? так тоже можно, косяков даже меньше будет, главное потом в регистре ее зафиксировать и полученное сальдо сверить

    Reply
  15. ulas

    Вообще, у нас фирма небольшая -веду учет в икселе начисленных, уплаченных остатков по работникам, иначе — все программы и обработки считают неправильно, или — обработка ничего — но меняется или формат данных. или отчетные формы. А так интересно, спасибо, но использовать — вряд ли буду. Иксель надежнее.

    Reply
  16. olsy

    УПП 1.3.41.1. Отличный отчёт! Очень помог найти неправильно подгруженную отчетность ПФР за прошлые года.

    Спасибо!

    Reply
  17. Nickon

    Отчет интересный, модуль не смотрел пока (некогда и незачем), но работает все прилично. Пересмотрел остатки — все в норме. Даже поспорил с ПФР по их остаткам. Мне ИМХО нравится. Спасибо!

    Reply
  18. siyayushhijasinxral@mail.ru

    спасибо, отчет то что нужно, искал давно, наконец-то нашел, а буду ли туда включены доработки ПФР за 2014 год ?

    Reply
  19. tazmag

    Спсибо за доработку

    Reply

Leave a Comment

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