Перейти к основному содержимому

Процесс импорта: от календаря к заказу

Informationen zum Artikel

Суть DolmiDesk™ — превращение твоих записей календаря в полностью подготовленные заказы.

Эта статья объясняет процесс целиком: как ты создаёшь записи, как система их распознаёт (логика) и что в итоге попадает в заказы при импорте.

Прежде чем начать

Чтобы запись вообще была «замечена», должны выполняться три правила. Все три ты настраиваешь в разделе Einstellungen → Konnektoren (см. Первые шаги):

  • Календарь: система читает записи исключительно из того календаря, который ты выбрал(-а) в поле Kalender für den Import.
  • Цвет: если ты выбрал(-а) Termin-Farbe (цвет записи), импортируются только записи этого цвета — удобно, чтобы отсеять личные встречи. При значении «alle Farben» (все цвета) учитывается любая запись календаря.
  • Временное окно: импортируется только то, что попадает в настроенный диапазон Alter (возраст записи) — не старше значения правого ползунка и не младше значения левого. Будущие записи никогда не импортируются.

Как и когда происходит импорт?

Открой Aufträge → Importieren. Диалог показывает каждую найденную запись в виде предпросмотра — именно так, как она попадёт в систему в виде заказа.

Диалог «Aus Kalender importieren» с четырьмя записями, для каждой указаны статус, Kunde и Kostenträger
Диалог импорта с найденными записями
  1. Шапка диалога показывает, откуда сейчас идёт импорт: календарь, цвет и временное окно.
  2. Каждая строка — это предпросмотр будущего заказа: дата, Anlass, Kunde · Kostenträger (плательщик) и предполагаемая сумма.
  3. Неполные записи всё равно импортируются. Предпросмотр лишь заранее показывает, сколько данных потом придётся дозаполнить.
  4. Neu synchronisieren заново считывает календарь — правильная кнопка после любого изменения записи.
  5. Alle importieren создаёт заказы из всех показанных записей. Выбора отдельных записей намеренно нет: то, что ты не хочешь импортировать, ты отсекаешь цветом и временным окном.

Календарь как форма ввода данных

Ты используешь Google Календарь не только для планирования времени, но и для того, чтобы передавать системе данные. Это логичное место: ты и так ведёшь там свои записи и держишь под рукой всю нужную информацию — нам остаётся только перенести её в заказ.

Система автоматически считывает эти поля:

Скриншот записи Google Календаря с важнейшими полями: заголовок, место, дата/время и описание.
Запись в календаре с самыми важными полями

Вот обзор:

Поле календаряКуда попадает в заказеФункция
1. ЗаголовокAnlass и TypОписывает, что было сделано. Префикс (см. ниже) определяет способ расчёта и удаляется из повода.
2. МестоEinsatzadresseЦель для расчёта маршрута.
3. Дата/времяEinsatzdatum, Beginn, EndeОснова для расчёта гонорара и дорожных цепочек.
4. ОписаниеKunde, Kostenträger и др.Поля, которых календарь не знает (см. Описание).
4. ВложенияAnlagenФайлы, прикреплённые к записи (бланки, подтверждения о выполнении), импортируются вместе с ней и сразу доступны в заказе.

Определение типа (служебные коды)

Через заголовок ты сообщаешь системе, как должен быть рассчитан заказ. Ключевое слово должно стоять в самом начале.

Префикс в заголовкеТипВлияние на расчёт
[Online] …OnlineБез транспортных расходов. • Без адресов. • При наличии — фиксированная ставка за онлайн.
[Ausfall] …AusfallПолные транспортные расходы (ты был(-а) на месте). • Гонорар по шкале отмены.
[Absage] …AbsageБез транспортных расходов (ты вообще никуда не выезжал(-а)). • Гонорар по шкале отмены.
(без префикса)Vor Ort• Стандарт: гонорар по времени + транспортные расходы.

Квадратные скобки не обязательны: Ausfall: Amtsgericht, Absage – Herr Meier или Online Beratung работают точно так же. Распознаются также варианты написания abgesagt, storniert, ausgefallen, no-show, remote — на немецком, английском и русском языках.

Пример:

  • Календарь: [Ausfall] Gerichtstermin Müller
  • Заказ: Anlass = «Gerichtstermin Müller», Typ = Ausfall, расчёт по шкале отмены + полные транспортные расходы.

Служебный код при этом удаляется и в повод не попадает.

Описание: дополнительные данные

В поле описания записи ты передаёшь данные, которые Google Календарь не знает. Синтаксис: Schlüssel: Wert (ключ: значение), одна запись на строку.

Kunde: Max Mustermann
Kostenträger: Polizei Frankfurt

Эти ключи DolmiDesk™ понимает:

КлючТакже распознаётся какДействие
KundeKundin, Klient, Client, Customer, КлиентПривязывает заказ к этому клиенту.
KostenträgerEmpfänger, Payer, Recipient, ПлательщикЗадаёт Kostenträger, который получит счёт.
EinsatzadresseEinsatzort, Adresse, Ort, Address, АдресПерезаписывает адрес из поля календаря «Место».
TransportmittelTransport, Verkehrsmittel, Fortbewegung, ТранспортЗадаёт вид транспорта для этой конкретной записи.

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

Для Transportmittel система понимает привычные слова: Bahn, Zug, ÖPNV, Bus и Tram означают общественный транспорт, Auto, PKW или Wagen — поездку на машине, а kein или zu Fuß — не рассчитывать поездку вовсе. Без указания действует твой вид транспорта по умолчанию из настроек.

Как решает система

Твоё указание в описании

Побеждает то, что ты пишешь там. Kostenträger: Polizei Frankfurt действует, даже если у клиента указано что-то другое.

  • Сценарий: клиент «Max Mustermann» обычно рассчитывается через Amtsgericht (участковый суд). На этот раз платит полиция.
  • Решение:
    Kunde: Max Mustermann
    Kostenträger: Polizei Frankfurt
  • Результат: заказ получает полицию в качестве Kostenträger — при условии, что она есть в твоих справочных данных по Kostenträger.

Значение по умолчанию из справочных данных

Если ты не указываешь Kostenträger, DolmiDesk™ берёт Kostenträger по умолчанию для этого клиента. Поэтому в подавляющем большинстве записей достаточно одной строки Kunde: ….

Данные из календаря

Для всего остального — повода, адреса, даты и времени — действуют сами поля календаря.

Опечатки допустимы

Если DolmiDesk™ не находит имя дословно в справочных данных, он ищет наиболее похожую запись (расстояние Левенштейна [1]). Так из Kunde: Max Mustrmann всё равно получится Max Mustermann.

При этом сравнение идёт как с обозначением («Frau Schulz»), так и с полным именем («Anna Schulz») — так что ты можешь писать так, как тебе удобнее в календаре.

Насколько «щедро» ведётся поиск — и ведётся ли вообще, — ты настраиваешь в разделе Einstellungen → Allgemein → Auftrags-Erkennung.

Логика цепочек (транспортные расходы)

Система распознаёт, есть ли у тебя несколько записей в один день. Правило: если между окончанием записи A и началом записи B меньше 2 часов (настраивается в разделе Einstellungen → Allgemein → Max. Stunden je Wegkette), они образуют цепочку.

Сценарии расчёта транспортных расходов подробно

Вот пять самых важных сценариев:

  1. Одиночная запись:

    • Маршрут: Дом → Запись → Дом.
    • Расчёт: полная дорога туда + полная дорога обратно.
  2. Цепочка (записи A и B расположены близко друг к другу):

    • Маршрут: Дом → Запись A → Запись B → Дом.
    • Запись A: полная дорога туда (из дома). Дорога обратно делится пополам, так как ты не едешь домой; вторую половину берёт на себя следующая запись.
    • Запись B: половина дороги туда (путь от A до B), полная дорога обратно (домой).
  3. Цепочка прервана (пауза > 2 ч):

    • Маршрут: Дом → Запись A → Дом, пауза, Дом → Запись B → Дом.
    • Система предполагает, что между записями ты съездил(-а) домой, и рассчитывает обе записи по отдельности.
  4. Онлайн-встреча в цепочке:

    • Запись типа Online никогда не создаёт транспортных расходов — и не связывает записи между собой.
    • При последовательности Запись A (Vor Ort) → Запись B (Online) → Запись C (Vor Ort) расчёт идёт так, как будто после A ты едешь домой, а для C выезжаешь заново.
  5. Отмена:

    • Запись типа Absage не создаёт транспортных расходов и исключена из логики цепочек — ведь ты никуда не ездил(-а).
    • Ausfall, напротив, засчитывается как настоящая поездка и обычным образом встраивается в цепочку с соседними записями.

Управление видом транспорта

По умолчанию действует твой Standard-Verkehrsmittel (вид транспорта по умолчанию) из настроек. Для отдельной записи ты переопределяешь его через Transportmittel: Auto в описании, а в готовом заказе можешь изменить его в любой момент — маршрут будет пересчитан заново.

Что происходит при импорте

Из каждой записи получается заказ — причём полностью подготовленный:

  • Он получает свой Auftragsnummer (номер заказа) по формату, заданному в твоих настройках.
  • Рассчитывается маршрут: дорога туда и обратно со временем и километражем, включая буферное время до и после записи. Именно то, что делает кнопка «Automatisch berechnen» в заказе.
  • Вложения записи скачиваются и прикрепляются к заказу как приложения.
  • Через Kostenträger подтягивается Abrechnungsmodell (модель тарификации) — благодаря этому в списке сразу видна предполагаемая цена.
Список «Aufträge» с тремя импортированными записями: у двух статус Abrechenbar, у одной — Unvollständig
Импортированные записи в списке заказов

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

Проверка полноты данных

После импорта DolmiDesk™ проверяет, всё ли собрано для расчёта. Результат ты видишь как статус у каждого заказа:

  • Unvollständig (не завершено) — чего-то ещё не хватает. Список показывает, сколько именно данных недостаёт.
  • Abrechenbar (можно выставить счёт) — заказ можно включить в счёт.
  • Abgerechnet (счёт выставлен) — он уже привязан к счёту.
Открытый заказ со статусом «Unvollständig» и выделенными пустыми полями Kunde и Kostenträger
Недостающие обязательные поля выделены в заказе цветом

Для проверки действуют следующие правила:

ДанныеОбязательны для расчёта?
Einsatzdatum, Beginn, EndeВсегда
AnlassВсегда
KundeВсегда
KostenträgerВсегда
AbrechnungsmodellВсегда (обычно берётся от Kostenträger)
Abgesagt am, abgesagt durch, AuftraggeberТолько для Ausfall и Absage
VerkehrsmittelТолько для Vor Ort и Ausfall
Start-, Einsatz- und EndadresseТолько для Vor Ort и Ausfall
Fahrzeiten und DistanzenТолько для Vor Ort и Ausfall
Deutschland-Ticket oder TicketpreisТолько для поездок на ÖPNV
ParkbelegТолько для поездок на машине с расходами на парковку

Если запись изменилась

Если ты переносишь, переименовываешь или удаляешь запись в календаре, важно, была ли она уже импортирована:

  • Ещё не импортирована: нажми в диалоге импорта Neu synchronisieren. Календарь будет полностью считан заново, и предпросмотр снова покажет актуальные заголовки, время, клиентов — и заново рассчитанную дорожную цепочку.
  • Уже импортирована: заказ теперь принадлежит тебе, а не календарю. Изменения записи больше на него не влияют — исправляй его напрямую в DolmiDesk™. Если нужно полностью пересобрать заказ, удали его и импортируй запись заново.

Идеальная запись в календаре

Вот как выглядит полностью заполненная запись:

Заголовок: Gerichtstermin Herr Müller Время: 09:00 – 11:00 Место: Gerichtsstraße 2, Frankfurt Описание:

Kunde: Max Müller
Transportmittel: Auto
Bitte am Eingang warten

DolmiDesk™ сделает следующее:

  1. Распознает клиента «Max Müller» и подставит его Kostenträger по умолчанию (например, «Landgericht»).
  2. Внесёт повод «Gerichtstermin Herr Müller», тип Vor Ort.
  3. Рассчитает маршрут на автомобиле — дорогу туда и обратно, время и километраж.
  4. Подтянет через Kostenträger Abrechnungsmodell и покажет сумму.
  5. Проигнорирует последнюю строку, так как это не распознанный ключ.

  1. Wikipedia, «Levenshtein-Distanz». [Онлайн]. Доступно на: https://de.wikipedia.org/wiki/Levenshtein-Distanz

Об авторе

Портретное фото Дмитрия Дугарева

С наилучшими пожеланиями

Dmitry Dugarev

Разработчик DolmiDesk™ и эксперт по IT-комплаенсу. Изначально я разработал эту систему, чтобы вернуть выходные своей жене (переводчице DGS). Сегодня я слежу за тем, чтобы твой учёт работал надёжно и полностью автоматически.