<?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. Добавил описание;)
2. обновил обработку в ней действие вычета 313 установил с 01.01.2008 (в первоначальном варианте было с 2009) хотя думаю это не принципиально.
НДФЛ считается неправильно.
Жду новую версию Вашей обработки.
Очень нужна.
дело тут не в обработке. новые коды вычетов не прописаны в коде. для корректного расчета НДФЛ исчисленного необходимо в глобальном модуле в процедуре глСобратьДанныеДляНДФЛ заменить строку
«ИначеЕсли ((КодВычета=101) или (КодВычета=102) или (КодВычета=106) или (КодВычета=107)) и (ДостиглиПределаДоходов=0) Тогда»
на строку
«ИначеЕсли ((КодВычета=101) или (КодВычета=102) или (КодВычета=106) или (КодВычета=107) или (КодВычета=108) или (КодВычета=109) или (КодВычета=110) или (КодВычета=112) или (КодВычета=111) или (КодВычета=113)) и (ДостиглиПределаДоходов=0) Тогда»
при этом печатная форма 2ндфл за 2009 формируется нормально, а вот печатной формы 1ндфл за 2009 год с новыми кодами вычетов еще нет, придется подождать с этим до нового релиза конфигурации….
(4) И правильно, что не прописаны… Приказ ФНС от 30.12.2008 ММ-3-3/694 уже вступил в силу ? Когда ?
Зарегистрировано 19.01.2009 (рег. № 13101) и вступило в силу спустя 10 дней после дня официального опубликования.
Правда дату официального опубликования не нашёл, кто в курсе опубликовали уже или нет?
А как быть с этими изменениями:
Доходы в виде материальной выгоды (ст. 212 НК РФ)
Установлено, что при получении физическим лицом доходов в виде материальной выгоды от экономии на процентах по займам и кредитам, выраженным в рублях, налоговая база по НДФЛ определяется как превышение суммы процентов, исчисленной исходя из 2/3 ставки рефинансирования Центрального банка РФ, действующей на дату получения дохода, над суммой процентов, рассчитанной по условиям договора (подп. 1 п. 2).
(7)http://www.buhsoft.ru/?title=pressa/43/at.php
Ввиду того, что автором оригинала проекта Antia была обнаружена ошибка в релизе 284, обработка обновлена.
Данная ошибка может сказаться, при обновлении на 286 релиз если обработка была запущена на релизе ранее 284 да и то при условии, что в 286 релизе ошибку не устранят.
Более подробно см комментарий 58 автора оригинала проекта.
(8) эти изменения к предмету данной дороботки не относятся. требуется изменение конфигурации. об этом по-моему уже не раз говорилось. но если же есть желание внести изменения самомтоятельно, в этом нет ничего сложного:)
Опубликовали 04/02/2009
http://www.rg.ru/2009/02/04/spravochniki-dok.html
Строку:
илого дома, квартиры или доли (долей) в них (кроме сумм, направленных на погашение процентов «;
о целевым займам (кредитам) и фактически израсходованных на новое строительство или приобретение «;
а територии Российской Федерации жилого дома, квартиры или доли (долей) в них), в размере фактически произведенных «;
документально подтвержденных расходов в пределах 2 000 000 руб., пп.2 п.1 ст.220 Налогового кодекса Российской Федерации.»;
// УстановитьВидВычета(«103″,»400 руб. на налогоплательщика, пп.3 п.1 ст.218 НК», 400 ,40000,’01.01.2009′);
не надо было комментировать — там предел изменился.
И сообщения типа: «Возможно необходимо установить вид вычета …»
Там по ходу д.б. [108 или 111] и [109 или 113], а не [110 или 111] и [112 или 113].
В процедуре «ПриВыбореТипаЛьготы» неплохо бы еще добавить:
ИначеЕсли ( КодВычета=»313″) Тогда
Форма.ИспользоватьСлой(«Основной,ИмущественныеВычеты»,2);
ОписаниеИмущественногоВычета=»Сумма, израсходованная на новое строительство либо приобретение на территории Российской Федерации «;
ОписаниеИмущественногоВычета=ОписаниеИмущественногоВычета+»ж
ОписаниеИмущественногоВычета=ОписаниеИмущественногоВычета+»п
ОписаниеИмущественногоВычета=ОписаниеИмущественногоВычета+»н
ОписаниеИмущественногоВычета=ОписаниеИмущественногоВычета+»и
А в процедуре ПриОткрытии:
Если РабочаяДата()>=’01.01.2008′ Тогда
//эти вычеты действуют с 01.01.2008
Льготы.НайтиПоКоду(«313»);
СписокВычетов.ДобавитьЗначение(Льготы.ТекущийЭлемент(),Льготы.Код + » (» + Льготы.Наименование + «)»);
КонецЕсли;
Ну и контроль для 313 вычета в Процедуре ПриЗаписи и Процедуре ПриВводеСуммы, если есть желание…
103 «400 руб. на налогоплательщика, пп.3 п.1 ст.218 НК» — 400 (до 40000)
а в обработке до 20000 — почему?
(14) Я же написал — разкомментируйте в обработке строку:
// УстановитьВидВычета(«103″,»400 руб. на налогоплательщика, пп.3 п.1 ст.218 НК», 400 ,40000,’01.01.2009′);
(13) благодарю. изменения по коду 103 внесены в обработку. а вот в отношении соответствия старых кодов новым хотелось бы услышать аргументы!
Итак мои аргументы: вычеты 108 и 111 абсолютно разные поскольку в первом случае вычет получют оба члена семьи, а во втором только один, да и суммы вычетов отличаются. тоже относится и к паре 109 113. таким образом пары из кодов 108 и 111 не получается равно как и пары из 109 113. в паре [110 111] вычет получает только один родитель и сумма вычетов одинакова, в паре [112 113] тоже что и в [110 111]+инвалидность. что и позволяет их сгруппировать именно таким образом.
вот смотрите: имеем вычет 101 предоставлялся «на каждого» родителя здорового ребенка. в новых кодах группа «на каждого» включает 108 и 109. поскольку код 109 предоставляется на инвалида, то остается код 108. итак нашли однозначное соответствие
101-108
далее 102 предоставлялся «единственному» родителю здорового ребенка. в новых кодах группа «единственных» включает 110,111,112 и 113 коды. из которых 112 и 113 предоставляются на инвалида, таким образом остаются возможные коды [110 111]. итак нашли соответствие
102-[110 111]
далее 106 предоставлялся «на каждого» по инвалидности. в новых кодах группа «на каждого» включает 108 и 109 из которых только код 109 предоставляется по инвалидности. итак нашли однозначное соответствие
106-109
ну и последний код 107 предоставлялся «единственному» родителю по инвалидности. в новых кодах группа «единственных» включает 110,111,112 и 113 к котоым по инвалидности относятся только 112 и 113. итак нашли последнее соответствие
107-[112 113], что собстно и было реализовано.
111 это вычет не единственному родителю, а вычет одному из родителей при условии что второй вычетами на ребенка не пользуется. Раньше это был 101 вычет. Поэтому можно даже по умолчанию менять 101 на 111. А 108 это вычет на здорового ребенка в том случае, если второй родитель тоже у себя на работе написал заявление на вычет (раньше вычет мог получать только один родитель). Вот исходя из того, что второй родитель скорее всего воспользуется этой новой возможностью и напишет
заявление на вычет (если, конечно, он работающий), потому что з/п одного родителя может и превысить 280000, и тогда получать вычеты двум родителям выгоднее, чем одному, я согласен, что надо по умолчанию менять 101 на 108.
То же самое с парой [109,113].
(17) А вообще то лучше даже переключатель добавить, вернее два, которые будут определять куда по умолчанию переносить 101 и 106 вычет.
(17) не надо ничего усложнять и мудрить!!! вычеты на детей банально делятся всего на две группы «каждому» и «одному» из возможной пары. понятия «единственному» или «одному при отказе второго» равны и относятся к группе «одному».
101, 106, 108, 109 относятся к группе «каждому», а 102, 107, 110, 111, 112, 113 относятся к группе «одному».
«Зарплата и Кадры» Как изменить размер вычетов по НДФЛ и пределы доходов?
*******************Официальный ответ 1С*************************
Размеры вычетов по НДФЛ, а также величины пределов доходов для исчисления вычетов пользователь может изменить в справочнике «Виды вычетов» (меню «Справочники» — «Классификаторы» — «Виды вычетов»). Изменяемые значения являются периодическими. Поэтому прежде следует указать дату изменения значения периодических реквизитов — 01 января 2009 года. А затем в графах «Сумма вычета» и «Предел доходов для исчисления вычетов» установить размеры вычетов и соответствующих им пределов доходов, действующих с начала текущего года.
По окончании ввода данных пользователь имеет возможность проверки произведенных действий в экранной форме «Значения периодических реквизитов». Форма открывается нажатием кнопки «История
(19) Не согласен (хотя бы потому, что не может одинокий родитель принести справку об отказе от другого родителя;), но спорить не буду, т.к. в данной ситуации это не принципиально — все равно окончательный выбор будет делать пользователь.
Чего вы спорите, горячие парни? Коды — всего лишь «сведения». Заменяйте не особенно мудрствовая. Лишь бы «суммовой» смысл подошел. Далее — дело самих расчетчиц применить конкретный код. Это последнее замечание относится к «размноживщимся» кодам. Для «101», например, жесткое соответствие со «108».
«313» код вообще надо из обработки выкинуть: коды этой группы назначаются строго на один год, и строго по справке из ИФНС. Потому никакой «автоматической» отсебятины 😉
Gorr я долёк от з/пл. Объясни мне пожалуйста с этого места.
Цитирую: «Для установки сотрудникам новых вычетов вручную, необходимо внести изменения в модуль формы справочника ВычетыСотрудниковПоНДФЛ:»
сомнение «установка вычетов вручную», я правильно понял, если я выполню твои изменения в конфигурации, то мне что то ещё придется делать вручную?
Тогда подскажи что именно?
Или напиши мне на io2t@ya.ru по подробнее об установке всех этих изменений в з/пл.
И ещё вопрос. У нас на предприятии есть мат.выгода тогда мне нужно выполнить следующие изменения:
Цитирую:
[
(20) Anita, а что ты на счет этого скажешь (ЗиК 285)?
ВидРасчета.МатВыгодаПоСсудам.Модуль Расчета(30):
Если ДатаНачала >= ‘01.01.2008’ Тогда
СтавкаЦБ=Константа.СтавкаРефинансирования.Получить(КонМесяца(ДатаОкончания))*3/400;
Иначе
СтавкаЦБ=Константа.СтавкаРефинансирования.Получить(Макс(Документ.ДатаДок,’01.01.2001′))*3/400;
КонецЕсли;
Имхо, я бы здесь тоже исправил на:
Если ДатаНачала >= ‘01.01.2009’ Тогда
СтавкаЦБ=Константа.СтавкаРефинансирования.Получить(КонМесяца(ДатаОкончания))*2/300;
ИначеЕсли ДатаНачала >= ‘01.01.2008’ Тогда
СтавкаЦБ=Константа.СтавкаРефинансирования.Получить(КонМесяца(ДатаОкончания))*3/400;
Иначе
СтавкаЦБ=Константа.СтавкаРефинансирования.Получить(Макс(Документ.ДатаДок,’01.01.2001′))*3/400;
КонецЕсли;
]
Ух что тоя запутался подскажи….
1. Вручную это значит дать возможность расчетчику устанавливать вычеты сотрудникам по мере необходимости в процессе своей нормальной работы. Обработка предназначена для тех сотрудников на которых вычеты уже были установлены до начала этого года. дело в том, что в справочнике ВычетыСотрудниковПоНДФЛ (подчинен справочнику сотрудников ) коды вычетов жестко прописаны и не отображаются все коды которые есть в справочнике ВидыВычетов. поэтому если этого не сделать, расчетчик не сможет установить новые вычеты вновь принятым работникам в этом году.
2. Думаю, все правильно понял.
Скоро должен выйти новый релиз (20.02.09) и если нет нужны можно просто подождать.
другое дело будет ли в нем предусмотрена процедура для закрытия старых вычетов.
Как и куда установить данный файл?
Откуда информация, что 20 числа выйдет обновление ЗиК?
Всем доброе время суток!
У меня возникла такая проблема. Человеку была начислена материальная помощь на рождение ребенка. А в справке 2-НДФЛ она не отражается. Что делать?
Спасибо!
После обновления полетели коды вычетов по детям.
Пришлось тупо написать вот это. 🙂
Процедура Сформировать()
Спр=СоздатьОбъект(«Справочник.Сотрудники»);
Спр1=СоздатьОбъект(«Справочник.ВычетыСотрудниковПоНДФЛ»);
Спр2=СоздатьОбъект(«Справочник.ВидыВычетов»);
Спр2.НайтиПокоду(«108101»);
Сообщить(Спр2.Наименование);
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
Спр1.ИспользоватьВладельца(спр);
Спр1.ВыбратьЭлементы();
Пока Спр1.ПолучитьЭлемент()=1 Цикл
Если Строка(Спр1.ВидВычета)=»108″ Тогда
Спр1.ВидВычета=спр2.ТекущийЭлемент();
Спр1.Записать();
Сообщить(спр);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
В связи с принятым сотрудниками 1С решением обновления кодов вычетов путем реструктуризации справочника ВидыВычетов, в обработку добавлена возможность отката выполненных ранее изменений.