Тетрадь авансов
Страница на водителя, ручка — и единственный экземпляр сальдо компании. В день, когда тетрадь теряется, долг обсуждают по памяти.
Три тысячи дирхамов, выданные водителю перед рейсом Танжер — Мурсия, — это не расход и не затрата, а сальдо. Модуль ведёт его как леджер, книгу, в которую можно только дописывать: строка на каждое движение, и ни одна строка не правится. Привезённые чеки он превращает в прослеживаемые возмещения со статусом на каждом шаге.
Страница на водителя, ручка — и единственный экземпляр сальдо компании. В день, когда тетрадь теряется, долг обсуждают по памяти.
Дорожные сборы, газойль, паром, таможня, парковка: возмещают то, что нашлось, — а водитель всегда находит больше, чем компания.
Водитель возвращается с евро и дирхамами. В тетради одна колонка, кто-то пересчитывает по курсу из головы — и сальдо перестаёт быть точным долгом.
Сумма подставляется по бареме — столько за день, столько за километр, — последнее слово остаётся за оператором, а бланк «Frais de déplacement» печатается под подпись. Строка леджера пишется только в момент выдачи наличных.
Деталь, которая имеет значение. Статус аванса — не поле, которое кто-то обновляет: он выводится из дат. Подготовленный, но не выданный аванс не двигает ни одного сальдо, потому что деньги всё ещё в ящике.
Подан, принят, одобрен, возмещён. У каждого шага есть время и автор; отказ обязан объяснить причину. В очереди фото чека стоит рядом с решением, которое надо принять.
Деталь, которая имеет значение. Возмещение пишет строку леджера в той же транзакции, что и смену статуса: не бывает возмещённых денег без движения и движения без одобренного чека.
Баланс водителя — сумма его строк, посчитанная на чтении. Колонки «баланс», которую можно поправить руками вечером в пятницу, не существует.
Деталь, которая имеет значение. Запрет живёт в базе данных, а не в коде: у приложения физически нет права изменить строку леджера, и тест на каждой сборке пытается это сделать, чтобы доказать, что отказ держится.
У водителя, который ездит в Испанию, есть баланс в дирхамах и баланс в евро — они показаны рядом. Продукт не конвертирует: выдуманный курс превратил бы точный долг в приблизительный.
Деталь, которая имеет значение. Это то же правило, что в марже, где дирхамы и евро показываются двумя суммами без итога. Сложение двух валют даёт неверную цифру, которая выглядит верной, — худший вид цифры.
Надбавка, удержание, корректировка: каждая правка объясняется — примечание обязательно — и оставляет след. Возврат сдачи по авансу — это строка, а не ластик.
Деталь, которая имеет значение. Та же доктрина, что и у фактуры: не зачёркивают, а пишут обратное. Тетрадь, в которой можно стереть, доказательством не является. А речь идёт именно о доказательстве — в тот день, когда водитель уходит, споря о своём сальдо.
| Водитель | Баланс | Авансы за месяц | Подтверждено | Последнее движение |
|---|---|---|---|---|
| H. El Amrani | − 1 250 MAD | 3 000 | 1 750 | вчера · возмещение дорожного сбора |
| Y. Benali | 0 MAD | 2 500 | 2 500 | 04/09 · возврат аванса |
| M. Ouali | − 400 MAD · − 60 EUR | 2 000 | 1 600 | 03/09 · газойль, Альхесирас |
| K. Tazi | + 320 MAD | — | — | 01/09 · надбавка |
Ни одну строку нельзя изменить или удалить — даже ошибкой в программе: право на запись отобрано на уровне базы данных. Выданное остаётся выданным и правится обратной строкой.
Выдача аванса и возмещение чека однократны по построению: двойной клик, повтор после обрыва связи или два оператора в одном досье не выпустят деньги во второй раз.
Аванс — это движение денег, а не затрата. Затрата — это одобренный чек и счёт за ним. Иначе один и тот же дорожный сбор посчитался бы в рентабельности рейса дважды.
Фото живёт не в галерее чьего-то телефона: оно привязано к движению и открывается через три месяца прямо из карточки водителя.
Ввод чека самим водителем с телефона, вместе с фото, приедет с приложением водителя; зарплата позже ляжет в этот же леджер своими типами строк. Баланс останется ровно той же суммой из тех же движений.
Модуль работает сам по себе. Вместе с модулем «Топливо» заправка, оплаченная водителем наличными, и транзакция карты сводятся в пару вместо того, чтобы посчитаться дважды; а зарплата придёт строками в этот же леджер.
Да, полностью. Всё вводится в офисе: аванс печатается под подпись, чеки фотографируются по возвращении и прикладываются к записи. Приложение водителя добавит ещё один источник ввода, но не заменит этот, и ничего из уже введённого не поменяет форму.
Теми же строками: возврат аванса за то, что он отдаёт, возмещение за то, что он потратил своими деньгами, удержание, если нужно, — каждая с датой, причиной и автором. Баланс становится нулём, потому что так говорят движения, а не потому, что кто-то написал ноль.
Создайте аккаунт, отметьте модули, добавьте грузовики — первая миссия отправится уже сегодня.