Порядок расчета НДС в УПП




Принцип обмена данными из 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='\

29 Comments

  1. husky

    Хорошая обработка

    Reply
  2. trumanl

    обработка интересна оказалось ради подхода проверки начисления НДС,

    в остальном, отбор по организации работает только по Авансам полученным и ОСВ по счету

    на других вкладках решается небольшой доработкой запросов в коде

    несколько не понятны названия некоторых закладок, и, как следствие, что на них отображается

    а, в общем, спасибо!

    Reply
  3. cherva

    Какие закладки непонятны?

    Reply
  4. olsy

    Очень полезная штука! Спасибо!

    Reply
  5. TrinitronOTV

    Скажите пожалуйста, а для конфигурации «бухгалтерия предприятия, ред. 2.0» такая методика приемлема и обработка подойдет?

    Reply
  6. cherva

    К сожалению, я не знаю механизма учета НДС в Бухгалтерии 2.0!

    Reply
  7. TrinitronOTV

    (6) cherva, спасибо за ответ

    Reply
  8. sumixam

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

    Reply
  9. TeMochkiN

    Не нашел отчета «Проверка НДС» в УПП 1.3.44.1

    Reply
  10. TeMochkiN

    а, этот отчет тут надо скачать. не заметил

    Reply
  11. TeMochkiN

    А есть что-нибудь подобное для налога на прибыль?

    Reply
  12. oglin

    Неплохой отчет, почти все смогли сверить, только вкладка «авансы полученные» не заполняется, хотя обороты по счетам 62.02. и 76.АВ есть.

    Reply
  13. cherva

    (13) Вкладка заполняется только ошибками, то есть тогда когда есть несоответствие оборотов по счетам!

    Reply
  14. oglin

    Поняла, спасибо.

    Reply
  15. ivannn

    Я так понял эта инструкция по расчету НДС в УПП не полная??? Вроде бы должно быть описание расчета НДС по продукции, косвенных расходов и т.д. Или я что то путаю???

    Reply
  16. cherva

    Да, эта инструкция для предприятий где не ведется сложный учет НДС, в том числе и в производстве

    Reply
  17. b-dm

    кроме УПП в Бух работает ?

    Reply
  18. cherva

    К сожалению, я не знаю хорошо БУХ!

    Reply
  19. Atrocity

    Автор, я хотел бы Вам прислать мою версию вашего отчета для прикрепления к этой чудесной публикации.

    Reply
  20. scc

    Спасибо.Хорошая вещь.

    Reply
  21. Lekar-istrument

    по 3 ссылке обработка Проверка НДС?

    Reply
  22. ketr

    а какая версия из трех обработок самая актуальная?

    Reply
  23. cherva

    Последняя — это наш модернизированный вариант, а вторая любезно предоставленная Atrocity для случая нескольких организаций

    Reply
  24. burgomister

    Странная штука: все проверки и отчёта заточены по 18%. А если используются две ставки — 10 и 18? Никто не подумал? Ни один отчёт не подошёл. Придётся своё сочинять. Или у кого-нибудь есть решение?

    Reply
  25. cherva

    (25) К сожалению, для нашей организации это не актуально. Соответственно, мы не заморачивались

    Reply
  26. nataliya_vl

    (20) Когда в документе реализации есть услуги, показывает две строки расхождения: товары с суммой в регистре и услуги с суммой в регистре. По факту ошибки нет.

    Reply
  27. cherva

    (27) Осветите пожалуйста проблему поподробнее. Я ничего не понял.

    Reply
  28. lesk

    (26) Да, теперь хочешь-не хочешь, а как минимум 2 ставки надо учитывать — 18% и 20%.(

    Reply
  29. cherva

    Выложил вариант обработки для НДС 20%. Эта ставка используется если начальная дата периода позже или равна 01.01.2019

    По-поводу 2 ставок НДС: Реально одна ставка НДС должна быть только для проверок Авансы полученные, Авансы зачтенные где тупо сравниваются данные по счету 62.02 и 76 АВ. Как эти проверки делать в случае 2 ставок НДС ума не приложу. Если кто подскажет алгоритм с удовольствием его реализуем

    Reply

Leave a Comment

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