Путевой лист — это такой документ, который является основанием для списания горючего в состав расходов в бухгалтерском и налоговом учёте. А ещё путевые листы нужны, чтобы обосновать необходимость аренды или лизинга автотранспорта.
Однако путевой лист достаточно запутанный первичный документ и на его заполнение можно потратить много времени. И это время нужно тратить регулярно. Эта статья - моя попытка сделать универсальный шаблон в гугл таблицах с возможностью полного автоматического заполнения буквально в два клика.
Мой шаблон не претендует на соответствие всем действующим нормам, а в первую очередь нацелен на кардинальное уменьшение времени, которое тратится на заполнение путевого листа.
При этом заполнение происходит рандомно сгенерированными данными на основании всего нескольких достоверных начальных параметров: начального и конечного показания одометра автомобиля и задания точного района, где эксплуатируется этот автомобиль.
Новый путевой лист с 2023 года
В настоящий момент, в 2023 году форма путевого листа может быть произвольной, но должна быть утверждена руководителем предприятия, и всё же в ней необходимо отразить определенную информацию, такую как:
Информацию о водителе
Данные о транспортном средстве
Данные о ТС
Срок действия путевого листа
Путевые листы составляют организации и индивидуальные предприниматели, которые используют транспорт в своей деятельности.
Как работает таблица
Моя форма путевого листа доступна по ссылке. По ссылке откроется запрос на создание вашей копии. При согласии будут также созданы копии прикрепленного файла Apps Script и относящихся к нему функций генерации адресов.
Верхняя часть путевого листа содержит обычные текстовые поля, которые не влияют на автоматизацию:
Информация о владельце транспортного средства: наименование, ИНН, ОГРН, адрес, телефон;
Информация об автомобиле: модель, государственный регистрационный знак, идентификационный номер (VIN);
Информация о водителе: фамилия имя отчество, номер водительского удостоверения.
Автоматизация начинается с первой даты выезда - ячейки B24
- как только вы введете эту дату таблица сама заполнит оставшиеся даты этого столбца рабочими днями - там прописана формула.
Нижняя часть путевого листа содержит очень важные исходные данные для автоматизации:
Начальный километраж по одометру.
Конечный километраж по одометру.
Как только вы заполните эти две ячейки таблица через формулы заполнит ежедневные показания одометра и дневной пробег - каждый день будет разный пробег, но в усредненных значениях.
Время выезда и заезда тоже вычисляется рандомно - можно поменять цифры в ячейке и изменить на любой другой часовой интервал.
Самые нижние строчки, связанные с остатком топлива в баке и количеством заправленного топлива и на автоматизацию не влияют.
Как настроить случайное место назначения в нужном районе
После того как даты и времена заезда и выезда, а ещё показаниями одометра на каждый день заполнены переходим к случайным адресам. Здесь пригодятся функции Apps Script.
В файл скриптов, привязанных к этой таблице, уже внесён следующий код обратного геокодирования (вычисления адреса по координатам) :
/**
* Use Reverse Geocoding to get the address of
* a point location (latitude, longitude) on Google Maps.
*
* =GOOGLEMAPS_REVERSEGEOCODE(latitude, longitude)
*
* https://www.labnol.org/google-maps-sheets-200817
*
* https://developers.google.com/apps-script/reference/maps/geocoder#setlanguagelanguage
*
* @param {String} latitude The latitude to lookup.
* @param {String} longitude The longitude to lookup.
* @return {String} The postal address of the point.
* @customFunction
*/
const GOOGLEMAPS_REVERSEGEOCODE = (latitude, longitude) => {
const {
results: [data = {}] = []
} = Maps.newGeocoder().setLanguage('ru').reverseGeocode(latitude, longitude);
return data.formatted_address;
};
Скрипт позволит запускать формулу вида =GOOGLEMAPS_REVERSEGEOCODE(58,0205391879819; 56,2652395772995)
которая возвращает адрес по координатам из гугл карт. Например, для этого запроса возвращается адрес Краснокамская ул., 20, Пермь, Пермский край, Россия, 614060
.
Существует ограничение на количество запросов геокодирования, но несколько листов в день можно заполнить без проблем. Если нужно, больше, то надо уже получать ключ API сервиса.
Дальше надо генерировать случайные географические координаты по количеству дней, для того чтобы потом превращать их через обратное геокодирование в обычный адрес.
Данный код позволяет получить случайную географическую точку рядом с заданной точкой, внутри определенного радиуса, например 2 километра.
/**
* Get random geo point [latitude, longitude] within some distance from specified geo point (lat, long)
*
* Points will be uniformly-distributed on multiple calls.
*
* @param lat Latitude in degrees
* @param lng Longitude in degrees
* @param distance Distance in meters to limit point distribution to.
* If negative value is provided, points will be generated on exact distance (e.g. on circle border).
* @returns {*[]} Array with [latitude, longitude]
*/
var getRandomLocation = function(lat, lng, distance = 10000) {
// Convert to radians
lat *= Math.PI / 180;
lng *= Math.PI / 180;
var radius;
// Distance should be set in meters, negative for exact distance
if (distance < 0) {
// Exact distance
radius = Math.abs(distance);
} else {
// Get uniformly-random distribution within peovided distance
// http://stackoverflow.com/questions/5837572/generate-a-random-point-within-a-circle-uniformly
radius = Math.random() + Math.random();
radius = radius > 1 ? 2 - radius : radius;
radius *= distance ? distance : 10000; // multiply by distance meters
}
// Convert radius from meters to degrees to radians
// 111319.9 meters = one degree along the equator
radius /= 111319.9;
// Correction for the actual distance from equator is NOT needed here
// radius *= Math.cos(lat);
// Convert to radians
radius *= Math.PI / 180;
// Random angle
var angle = Math.random() * Math.PI * 2;
// Get a point {nLat,nLng} in a distance={radius} out on the {angle} radial from point {lat,lng}
// From Aviation Formulary V1.46 By Ed Williams:
// → http://williams.best.vwh.net/avform.htm#LL
// → ftp://ftp.bartol.udel.edu/anita/amir/My_thesis/Figures4Thesis/CRC_plots/Aviation%20Formulary%20V1.46.pdf
// → https://github.com/arildj78/AvCalc/blob/master/avform.txt
// [section "Lat/lon given radial and distance"]
var nLng,
nLat = Math.asin(Math.sin(lat) * Math.cos(radius) + Math.cos(lat) * Math.sin(radius) * Math.cos(angle));
if (Math.cos(nLat) == 0) {
nLng = lng;
} else {
nLng = (lng - Math.asin(Math.sin(angle) * Math.sin(radius) / Math.cos(nLat)) + Math.PI) % (Math.PI * 2) - Math.PI
}
// Convert to degrees
nLat *= 180 / Math.PI;
nLng *= 180 / Math.PI;
Пошаговое руководство по заполнению
В самом начале выбирайте на гугл картах точку, от которой хотите оттолкнуться для генерации случайных адресов.
Далее перейдите в гугл скрипты - для этого выбирайте пункт меню Apps Script.
Вписывайте скопированную точку в скрипт и указывайте имя вкладки таблицы. Дополнительно указывайте радиус генерации случайных точек в метрах. В моём примере указано 2000 метров.
При первом запуске скрипта надо разрешить выполнение скрипта от своего аккаунта.
После выполнения скрипта в появившемся журнале выполнения можно будет увидеть информацию об успешной генерации случайных адресов:
После этого все места назначения на указанной вкладке будут заполнены случайными координатами, которые при помощи формулы обратного геокодирования будут сразу преобразованы в адреса.
Что делать после заполнения данных
После генерации координат и обратного геокодирования рекомендую скопировать адреса мест назначений как на скриншоте ниже и вставить Только значения
чтобы адреса стали просто текстом, без формулы.
Ведь если много вкладок, то можно легко потратить собственный суточный лимит бесплатных конвертаций впустую.
Итог
В итоге получается полностью заполненный путевой лист, который максимально похож на настоящий. При этом заполнение происходит рандомно сгенерированными данными на основании всего нескольких достоверных начальных параметров:
начального и конечного показания одометра автомобиля;
задания точного района, где эксплуатируется этот автомобиль.
Когда начальные данные уже заданы, то следующий месяц можно полностью заполнить данными меньше чем за минуту.
Автор: Михаил Шардин,
17 января 2023 г.
Комментарии (13)
HiLander
17.01.2023 09:52+1Много лет назад делал для себя подобную штуку на дельфях. Выбираешь месяц - он автоматом прописывает количество дней убирая выходные. Прописываешь общий расход топлива (сколько талончиков надо списать), он автоматически разбрасывает случайным километражом/литражом по всем дням. Итог выгружался в эксель готовый для печати (двусторонней). Подписи в шапке настраивались опционально. Место назначения прописывал универсально "по объектам" ибо работал снабженцем и поставщиков было 100500 и возить надо было на десяток разных объектов (в т.ч. на удалении до 300Км). Ни у кого вопросов не возникало ни разу... Если интересно могу поискать исходники.
Vlad_VM333
18.01.2023 07:11+1Примечание: "Организации и предприниматели, деятельность которых связана с автотранспортом, обязаны оформлять путевой лист – первичный документ для учета и контроля работы транспортного средства и водителя", "оформлять путевой лист, если индивидуальный предприниматель использует автомобиль для коммерческих перевозок пассажиров, грузов и багажа, а также при ведении иной экономической деятельности. Для поездок по личным делам, не связанным с предпринимательской деятельностью, путевой лист оформлять не нужно".
Замечания по шаблону:
-"Приказ № 368 не содержит указаний на максимальный срок действия путевого листа, однако учитывая приведенные выше правила, можно сделать вывод, что закон позволяет оформлять один путевой лист сразу на несколько дней или недель, но только в том случае, если рейс длится весь срок действия путевого листа. Под рейсом в данном случае следует понимать поездку с момента выезда транспортного средства с места стоянки до момента его возвращения на стоянку", т.е. в случае возвращения ТС на место базирования обязательно оформлять новый путевой лист!
-путевой лист- это бланк, который должен быть в физическом плане, т.к. в нем ставит подпись механик, врач, водитель, в некоторых случаях другая организация ставит отметки "задание выполнено", либо водитель указывает задание (обратная сторона путевого листа) перевозка груза, перевозка людей и.т.д.;
-что касается координат..возможно имело бы смысл интегрировать данный шаблон, либо разработать программу, которая позволяла бы через приложение у водителя, привязанного к картам, ставить отметку "выехал", "приехал под загрузку" и т.д., тогда система автоматически считала время выезда, возвращения, выезда и точек стоянки.
abNomen
Ну вы же сами пишете, что путевой лист является основанием для списания топлива в бух и налоговом учете. При этом место назначения - некое рандомное место, и у проверяющего сразу должен возникнуть вопрос, какое экономическое обоснование прибыть в это некое место. Так же автомобиль у вас с утра выехал, приехал куда-то и не вернулся. Было бы более правильным создать некое количество мест, в которые автомобиль может ездить и из них рандомом выбирать + добавить возвращение на первоначальное место.
empenoso Автор
Предполагается что это рандомное место находится в кругу интересов этого водителя - например он работает по этому району и на самом деле там бывает по разным адресам. Даже если будут смотреть по камерам - то хотя бы район примерно совпадёт.
aborouhin
Не будут смотреть по камерам, проверять же налоговая будет, у них ни доступа к камерам, ни желания на это время тратить. Просто возьмут рандомный день и адрес и спросят - мил человек, что конкретно ты на этом адресе в этот день делал? Покажи бумажку. Заказ доставлял - где этот заказ? И после фиаско с парой случайно выбранных адрсов - снесут из расходов все затраты по таким путевым листам (топливо, а ещё ТО автомобиля). Оно, конечно, есть шанс, что прокатит, но если выездная проверка будет и ничего серьёзнее не найдут - то и до путевых листов докопаются.
empenoso Автор
Как раз вот и будут. Лизинговые машины обладают какой-то особенной привлекательностью для налоговой.
И путевые листы ведь в более общем плане - не только курьеры. Может работы какие-то проводились на сетях связи например.
aborouhin
У Вас есть конкретные примеры? Не в рамках уголовного дела, а просто в ходе проверки? Я с трудом себе представляю, чтобы ИФНС сначала писала запрос в МВД о предоставлении выписки из данных системы "Поток", потом корпела над картой, сопоставляя точки в путевых листах с точками из этой выписки... Скорее на нестыковках во внутренних документах поймают (маршрут в листе в день N в одной части города, а чек с заправки в тот же день - с совершенно другой).
При том, что выхлоп с этих действий в любом случае невелик, это ж не миллиарды, выведенные на однодневки, скажем... Ведь рисовать фейковые листы осмысленно только в случае, если у нас нет задачи внутреннего контроля за водителями (скажем, если ИП сам ездит на своей машине, он всё равно листы заполнять обязан, и тут уже дурацким требованиям - дурацкое исполнение). Какие там суммы затрат в этом сценарии...
Ну тогда наряд на работы попросят показать. Беспроигрышный вариант - только если точки собственные (например, сеть магазинов). Но тогда как раз и надо генерить маршруты между этими точками, а не придумывать случайные адреса. А если это адреса сторонних лиц - так или иначе должен быть какой-то документ, на основании которого нам туда надо ехать.
В общем, тут либо реально забиваем "свои" точки (офисы, магазины, производственные площадки, стоянки и пр.) и рисуем рандомные маршруты между ними. А потом вручную перепроверяем на отсутствие противоречий иным документам (заправки, мойки, ТО, аварии, штрафы и т.п.) Либо ничего не рисуем и генерируем соответствующие реальной жизни путевые листы.
P.S. Нашёл несколько дел, когда налоговая реально данные "Потока" запрашивала и на них ссылалась. А53-9473/2021, А54-9379/2021, А63-12114/2014. Но там возили щебень самосвалами (по первым двум делам) и алкоголь (по третьему) - и во всех случаях налоговой оспаривалось не только списание топлива, но и фиктивность поставок самого этого щебня/вина в целом, т.е. смысл заморочиться у них был.
empenoso Автор
У вас очень осмысленные ответы. Спасибо вам.
Особенно согласен "дурацким требованиям - дурацкое исполнение".
empenoso Автор
Можно и как вы предлагаете, но эти места могут быть совершенно в разных районах - если будут проверять как автомобиль фактически ездил, тогда вообще нестыковка будет.