Счет-фактура на аванс. Внешняя печатная форма




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

13 Comments

  1. dummy

    >> Избавьтесь от ненужных реквизитов, столбцов и строк!

    а в чем смысл затеи, можно поинтересоваться?

    Reply
  2. ЛюблюТебя

    с такой счет-фактурой думаю будут проблемы с налоговой инспекцией

    Reply
  3. Звездочет

    Смысл- субъективное отражение значения 🙂

    Форма счета-фактуры, приведенная в постановлении Правительства, не соответствует

    пункту 5.1 ст.169 НК РФ по содержанию.

    Дело не только в наличии лишних, не используемых показателей.

    Но и в неадекватности остальных.

    Например, в счете-фактуре на аванс не должно быть показателя

    «Стоимость товаров (работ, услуг), имущественных прав, всего с учетом налога».

    Вместо стоимости товаров должна быть указана сумма поступившего аванса (предоплаты). Что не одно и то же.

    Видимо, столь простая мысль дается не всем 🙂

    Reply
  4. dummy

    на моё скромное имхо, это называется «искать себе (организации) на жопу приключений»… причем, без какой-либо на то необходимости.

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

    Reply
  5. Звездочет

    Никто из налоговых работников тявкать против Налогового Кодекса просто

    не осмелится.

    Так что и ты, пожалуйста, не озвучивай пустые и абсурдные по содержанию

    предположения.

    Reply
  6. dummy

    уж не знаю, чем вы по жизни занимаетесь, что так «оторваны от земли»… приведу всего один пример, недельной давности:

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

    в общем, никто им не указ, увы… и «тявкать», как вы выражаетесь, они будут. и доказать им ничего не получится.

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

    Reply
  7. Арчибальд

    НК не регулирует формат счет-фактуры, однако перечисляет 14 ее реквизитов, из которых только два имеют право отсутствовать. Эта разработка — засада.

    Reply
  8. Звездочет

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

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

    В соответствии спунктом 5.1 ст.169 НК РФ,

    В счете-фактуре, выставляемом при получении оплаты, частичной оплаты в счет предстоящих поставок товаров (выполнения работ, оказания услуг), передачи имущественных прав, должны быть указаны:

    1) порядковый номер и дата выписки счета-фактуры;

    2) наименование, адрес и идентификационные номера налогоплательщика и покупателя;

    3) номер платежно-расчетного документа;

    4) наименование поставляемых товаров (описание работ, услуг), имущественных прав;

    5) сумма оплаты, частичной оплаты в счет предстоящих поставок товаров (выполнения работ, оказания услуг), передачи имущественных прав;

    6) налоговая ставка;

    7) сумма налога, предъявляемая покупателю товаров (работ, услуг), имущественных прав, определяемая исходя из применяемых налоговых ставок.

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

    Таким образом, к семи реквизитам добавляется еще два- подписи руководителя и главного бухгалтера.

    Реквизиты свидетельства ИП опускаем, посольку конфигурация БУ для них не предназначена.

    Все девять реквизитов в предлагаемой печатной форме имеются.

    Мифические 14 реквизитов- не при делах.

    Напомню, что правительственная форма при операции получения аванса

    не подходит по содержанию, поскольку содержит показатели стоимости товаров

    вместо суммы полученной предоплаты.

    Формально уже на этом основании покупатель рискует получить отказ

    в вычете налога.

    Господа критиканы, оставьте ваши бездоказательные замечания!

    Reply
  9. dummy

    >> Формально уже на этом основании покупатель рискует получить отказ в вычете налога.

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

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

    остается в третий раз повторить вопрос: нафига козе боян? 😉

    Reply
  10. nickVZ

    Когда вы будете ее (СФ) выписывать, ни один налоговый инспектор не вякнет, что вы неправильно оформляете СФ. И перечисленный НДС возьмут 🙂

    Потом вас возьмут за яйца ваши контрагенты. Но это уж потом…

    А какая мне нАфиг разница, что там на форме? Лишь бы было у всех одинаково…

    Reply
  11. alexk-is

    …это подстава чистой воды — это не критика…

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

    Reply
  12. ЛюблюТебя

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

    Reply
  13. Арчибальд

    (8) Спасибо, конечно, за полную цитату п. 5.1. У меня на диске точно такой же текст.

    Наверное, я слишком кратко изложил свою позицию. Однако посты 9 и 10 эту позицию вполне разъясняют. Одну (свою) налоговую инспекцию забодать можно. Покупательские — никогда.

    Reply

Leave a Comment

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