<?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='\
с авансами по комиссии тот еще геморрой
(1) pm74, В последней версии помощника для комиссионера на УСН можно «оптом» перекидывать авансы с дохода комитента на доходы УСН и наборот. А вот как быть с авансами, которые указали как доход комитента, если коминтент на ОСНО?
Уточню вопрос — нужно ли на них выписывать счета-фактуры на аванс, и как это передавать комитенту?
(2) сф на аванс комитента перевыставляются комитентом комиссионеру аналогично обычным СФ по реализации.
(3) pm74, Это понятно, только вот беда, почему то никто (из мне известных) этого не делает, и в свой доход (если УСН) включать не хочет 🙂 И ещё вопрос, как комитент отнесётся к таким счетам-фактурам?
(4)
имхо риски комитента значительно выше , т.к. эти СФ он обязан отразить в книге продаж а комиссионер в 2 частях журнала СФ.
(5) pm74, Не знаю, насколько выше, если комиссионер не предоставит информацию по авансам, то комитент получится «белым и пушистым». Комиссионер в таком случае должен принять аванс в свой доход… А вот если он не делает ни того ни этого — то вполне может оказаться крайним… Вот про эти моменты и хочется пообщаться, как у кого работают?
выше по определению т.к. штрафные санкции за неуплату НДС лягут на него , «затихарить» эти СФ никак не получится в любом случае покупатель отразит этот аванс к вычету. Комиссионеру, если он на УСН, не выгодно принимать эти фактуры на свой счет — есть риск перебрать по сумме выручки ( 45 млн. ?? не помню точно предел для УСНщиков), если комиссионер на ОСН то тем более
(7) pm74,
— покупатель отразит в своём учета зачёт аванса поставщику, что в декларации по НДС не отразится никак. К вычету НДС с авансов выданных берут только те, кто в договоре с поставщиком прописал, что на эти авансы ему обязаны выписать и предоставить счет-фактура, что делается далеко не всегда, так что тут под проверку не попадает… По расчетному счету комиссионера пройдут деньги от покупателя, но то, что это был авансовый платёж отследить можно только по назначению платежа, а там слово аванс присутствует далеко не всегда.
Так что, ИМХО, комиссионер под раздачу попадёт не так однозначно, а комиссионер может попасть, если будет проверка и будет выяснено, что полученному авансу не был передан комиссионеру счет-фактура на аванс, и комиссионер не отразил его как свой доход (который, после реализации был бы вычтен из его книги).
Тут ещё одна деталь — как комитент и комиссионер связаны — т.е., например, в пределах одного холдинга тут кроется вполне легальная оптимизация налогообложения — принимать как свой доход выгоднее комиссионеру, и платить авансовые платежи 6%, чем 18% комитенту. Главное, чтобы на конец года не слететь с УСН. Я не прав?
(8)
[Налоговый кодекс РФ] [Глава 16] [Статья 120]
1. Грубое нарушение правил учета доходов и (или) расходов и (или) объектов налогообложения, если эти деяния совершены в течение одного налогового периода, при отсутствии признаков налогового правонарушения, предусмотренного пунктом 2 настоящей статьи,
влечет взыскание штрафа в размере десяти тысяч рублей.
….
3. Те же деяния, если они повлекли занижение налоговой базы,
влекут взыскание штрафа в размере двадцати процентов от суммы неуплаченного налога, но не менее сорока тысяч рублей.
….
Как видите санкции за неверно заполненный журнал не столь критичны как занижение суммы налога поэтому комитенту лучше «перебдеть» чем «недобдеть».
(9) pm74, Вы меня не слышите, я говорю о том, что комитент не может знать, о том, что комиссионер получил аванс в счет поставки ЕГО товаров, если комиссионер не предоставил ему счета-фактуры. И комиссионер, если не хочет «влететь» должен как минимум заплатить с этих авансов свой налог, а по правильному выписать счет-фактуру на аванс. До 2015 года этим вообще никто не заморачивался — в декларации книги продаж и покупок не было, а про авансы, когда я начал говорить, вообще сделали большие глаза…
Суть в том, что комиссионер может торговать как собственными товарами (услугами), так и товарами комитента, и платежи от покупателей комиссионеру могут проходить по разному (один аванс на поставку и того и того, например). Хочется автоматизировать процесс, но как прийти к правильному отражению???
(10)
и я об этом же в (1) , плюсом ваш покупатель может попросить ТЗР отдельной фактурой , а это уже комиссия — покупка
(11) pm74, Вот это то и хочется автоматизировать…
Чтобы автоматизировать нужна какая то логика. Например вы продаете товар от 5 комитентов и собственный. Вам пришел аванс от покупателя (расчеты по договору) в конце квартала. Чей он спрашивается ? Как это определить ?? Рассылать всем комитентам авансовые СФ ? Тут , ИМХО , все сильно зависит от структуры продаж. Например в моем случае :99% комиссия ,один комитент, комисионные и собственные товары различаются , как правило, идут разными накладными и для очень ограниченного числа покупателей и как правило по предоплате 1:1 . Был выбран вариант когда договор покупателя просто разделили на условные «Договор-004» , «Договор-41» , соответственно авансы зачтенные в пределах квартала разносятся по договорам постфактум , незачтенные (если априори неясно ) выставляются на комитента. Все это довольно ущербно с точки зрения автоматизации , но лучшего решения пока у меня нет.
Может быть конечно я чего нибудь недопонимаю , и делаю неправильно , но если честно нигде не видел объяснения как сделать правильно. (ИТС не в счет, там примеры из области нереальной фантастики )
(12) вобще я думаю, что это очередная неработающая недоделка от минфина
(13) pm74,
— вне всякого сомнения…
— в этом случае я бы все доходы относил на доход комитента, при собственной реализации в книгу всё равно попадёт правильно, при её проведении и зачете «своей» части аванса (проверено и на услугах и на товарах).
Для торговля как своим, так и комиссионным товаром — вот тут самый цимус. когда это всё в одной накладной. В принципе всё отрабатывает, вот только непонятка со счетами-фактурами, выданными покупателю, если мы продаём свой товар и на платим УСН — тогда какой счет-фактура — НДС то нет? Или делать разные строки с НДС / без НДС? Походу не стоит одним документом такие продажи делать — иначе потом не разгрести…
(15) у меня и комитент и комиссионер ОСНО , завод(комитент) и ТД(комиссионер)
у ТД попадет конечно, а завод что будет с этими авансами делать потом
однозначно комиссия будет с ндс если комитент на осно
о чем и речь, а если разные документы реализации то и договора покупателя можно сделать разные см.(13) тогда и платежки можно разнести по разным договорам возможно в этом направлении и стоит автоматизировать
(16) pm74,
— платить НДС с аванса, что ещё 🙂
— это «внутренние» расчеты между комитентом и комиссионером, а про реализацию комиссионером конечному покупателю толкую — если в одной реализации, к примеру, продаётся продаётся одно наименование товара, а у комиссионера он как свой, так и комиссионный, как правильно это потом оформлять, или тупо не допускать таких ситуаций?