Ordering.Tools
Ordering.Tools
Feed them, keep them
Управление на персонала · Фаза 2

Заплати и часове — append-only история, geofenced часовник, готови за импорт timesheets

Задайте почасови ставки на служител, оставете ги да отбиват часовник от телефона си с опционална локационна верификация и експортирайте timesheet в CSV или XLSX с един клик. Всяка промяна на заплата е версионирана; всяко clock събитие е append-only; всяка корекция оставя audit trail.

Какво е проследяване на заплати в Ordering.Tools?

Проследяването на заплати превръща модул Персонал в източник на истината за това какво печели всеки член на екипа и какво всъщност е работил. Задайте почасова ставка на всеки служител; новите ставки заместват старите с effective-from дати, така че историята остава чиста. Персоналът отбива часовник от mobile waiter shell — опционално верифицирано чрез Haversine разстояние срещу GPS координатите на заведението. Timesheet агрегацията съединява отбити минути × заплатата в сила тогава и произвежда CSV или XLSX, който можете да предадете на счетоводителя.

Целият pipeline е append-only. Заплатите са версионирани (effectiveFrom / effectiveUntil) — никога не UPDATE-вате ред, замествате го. Clock събития са immutable — мениджърски редакции записват нов MANUAL_ADJUST ред, ретериращ оригинала, оригиналът се запазва verbatim. Това прави защитата от трудови спорове тривиална: всяка цифра на ведомост може да бъде ре-извлечена от подлежащия audit trail месеци по-късно.

Защо това е слоят за заплати, на който счетоводителят ви ще се довери

Една валута на заведение, без изненади

Всеки wage ред съхранява центове във валутата на заведението — без per-row currency колона, без exchange-rate drift, без объркване когато служител се премести между заведения. Multi-venue работник има множество wage редове, по един на заведение, във валутата на всяко заведение.

Geofenced clock-in (никога не блокира)

Когато заведението има lat/lng + ненулев clockInRadiusMeters, clock събитието записва координатите на устройството, изчислява Haversine разстояние до заведението и флагва geofenceOk. Никога не отказваме clock-in заради GPS drift — записваме истината и показваме флагнатите събития за мениджърски преглед.

5-минутно undo на промени на заплата

Написахте 1500 вместо 15.00? Имате 5 минути за undo — редът хард-изтрива само ако никой ClockEvent не е калкулиран срещу него още. След 5 минути или щом заплатата е ползвана в payroll run, единственият път напред е коригираща замяна с notes.

CSV и XLSX експорти за всеки payroll софтуер

Timesheet grid експортира в CSV или XLSX с userId, username, hourlyRate, hoursWorked, grossPay колони. Pipe-нете към софтуера на счетоводителя ви (Microinvest TRZ, Plus Minus, Ажур L) без ръчно препечатване.

Как работи проследяването на заплати

1

Задайте почасови ставки на персонал

Отворете Персонал → Заплати и кликнете празна Rate клетка за всеки член на екипа. Запази. Запазването създава нов StaffWage ред, маркира effectiveUntil на предишния активен ред като сега и записва StaffAuditLog. Валутата следва venue.currency.

2

Персоналът отбива часовник от телефона

Mobile waiter shell-ът показва Clock In/Out бутон най-горе. Едно докосване хваща координатите на устройството (ако е разрешено), изчислява Haversine разстояние, записва събитието и автоматично свързва с днешната насрочена смяна, ако startTime е в рамките на 30 минути.

3

Мениджърът коригира събития когато е нужно

Ако сервитьор е забравил да отбие, отворете Персонал → Audit, намерете събитието, кликнете Adjust. Системата създава нов MANUAL_ADJUST ред, ретериращ оригинала (който се запазва). Reason код е задължителен, така че следващият рецензент да разбира какво е станало.

4

Експортирайте timesheet

Отворете Персонал → Timesheets, изберете диапазон от дати (по подразбиране: миналия месец), прегледайте grid-а, натиснете CSV или XLSX. Файлът сваля с периода в името и е готов за импорт в payroll софтуера ви.

Заплати и часове — детайли

Append-only StaffWage с effective дати

Всяка промяна на заплата е нов ред. Предишният активен ред получава effectiveUntil зададен в същата $transaction. Четенето на текущата заплата в момент е просто WHERE effectiveFrom <= at AND (effectiveUntil IS NULL OR effectiveUntil > at).

  • Никога UPDATE — винаги supersede
  • 5-минутен undo прозорец за typos (когато няма калкулиран ClockEvent)
  • Опционални role-specific ставки (сервитьор срещу кухня)
  • Notes поле улавя защо ставката е променена

Geofenced clock-in чрез Haversine

Конфигурируем за заведение: clockInRadiusMeters = 0 деактивира проверката. Иначе всяко clock събитие хваща координати на устройство, изчислява great-circle разстояние до venue.lat/lng и съхранява geofenceOk = (distance <= radius). Проверката никога не блокира — флагва.

  • Конфигурируем радиус на заведение (по подразбиране 100 м)
  • Деактивиран при radius = 0 — полезно за заведения без точни координати
  • Авто-свързва към днешната StaffShiftAssignment ако startTime е в 30 мин от clock-in
  • Предупреждава мениджъра чрез web-push когато geofenceOk = false (без авто-блок)

Append-only ClockEvent с manual adjust

Всяко clock събитие е immutable след записване. Мениджърски редакции създават нов MANUAL_ADJUST ред, сочещ към оригинала чрез notes + adjustReason. Оригиналът се запазва verbatim — защитата от трудов спор е вградена.

  • Видове: CLOCK_IN, CLOCK_OUT, BREAK_START, BREAK_END
  • Source поле: MOBILE | KIOSK | MANUAL_ADJUST
  • Хваща IP + user-agent + координати на устройство за forensic преглед
  • Корекциите изискват непразна reason код

CSV и XLSX timesheet експорти

Агрегаторът съединява отбити минути на служител × заплатата в сила в края на периода. Експортите включват userId, username, почасова ставка, отработени часове и брутно възнаграждение. CSV е универсален; XLSX използва същата xlsx библиотека, която захранва другите Ordering.Tools експорти.

  • CSV с правилно escape-ване за стойности със запетая/кавички/нов ред
  • XLSX с native number cells (не strings) — счетоводителите могат да pivot-нат
  • Filename embeds-ва периода (timesheet-YYYY-MM-DD-to-YYYY-MM-DD.ext)
  • Per-user филтър когато ви трябва timesheet на един служител

Къде проследяването на заплати си заслужава

Месечен payroll без spreadsheet

Край на месеца: отворете Персонал → Timesheets, изберете миналия календарен месец, натиснете XLSX, предайте файла на счетоводителя. Предишният Excel-from-paper-clock workflow отнемаше 4 часа; този отнема 30 секунди.

Забравено clock-out

Анна е тръгнала в 23:00 но е забравила да отбие и системата автоматично е приключила смяната ѝ в полунощ. Отворете audit log, намерете CLOCK_OUT-missing pattern-а, кликнете Adjust на последното ѝ събитие, задайте правилното време, добавете reason „забрави да отбие — потвърдено чрез охранителна камера“. Нов MANUAL_ADJUST ред идва; оригиналът се запазва.

Персонал се мести между заведения

Петър се премества от London Pub в Camden заведението. Получава нов StaffWage ред във валутата на Camden (GBP за двете, но шейпът на данните поддържа cross-currency местения). Историята му в London Pub остава непокътната — всяко gross-pay изчисление срещу London часове използва London заплатата.

Защита от трудов спор

Сервитьор оспорва ведомост от 6 месеца назад. Отворете Персонал → Audit, филтрирайте по потребител + диапазон дати. Всяка промяна на заплата, всяко clock събитие, всяка мениджърска корекция е там с името на актьора, timestamp и reason кода. Ре-извлечете брутото от raw събития за 30 секунди.

Geofence флагва дистанционно clock-in

Служител отбива от вкъщи „защото чака доставка“. geofenceOk = false флагът изплува в audit log. Питате, потвърждават, приемате веднъж и продължавате — или казвате да отбиват само в заведението, с audit log като разписка.

Per-role заплащане (кухня срещу зала)

Служител, който покрива и server и kitchen смени има два StaffWage реда (един с role = SERVER, един с role = KITCHEN). Wage resolver-ът избира правилната ставка въз основа на ролята на смяната по време, когато clock събитието е калкулирано.

Часове, заплати и clock събития, които издържат проверка

Повечето POS системи в ресторантите проследяват бакшиш и продажби, но третират заплатите като „на някой друг проблем“. Модулът Персонал на Ordering.Tools затваря тази пропаст end-to-end: почасови ставки с effective дати, geofenced clock-in, append-only event история, CSV/XLSX експорти за всеки payroll софтуер. Pipeline-ът е проектиран за момента, в който заплата бива оспорена — месеци по-късно, с недостъпен оригинален мениджър — и отговорът трябва да бъде reproducible от raw редове. Затова никога не UPDATE-ваме заплати или събития; само supersede или adjust с audit.

Защо append-only бие „редактируем“

Служител оспорва ведомост. Мениджърът, който е задал ставката му е напуснал компанията. Без append-only история имате един ред, показващ текущата ставка и без начин да докажете каква е била ставката в деня на оспорваната смяна. С append-only имате effectiveFrom / effectiveUntil двойки, които ре-извличат всеки минал ден за една заявка. Същата логика за clock събития: забравена ръчна редакция презаписва историята; MANUAL_ADJUST ред я запазва. Цената на append-only е повече редове; ползата е защитим audit trail.

Geofenced clock-in: флаг, никога не блокирай

Indoor GPS drift в бетонни сгради означава, че служител може да стои на бара и да показва 200 метра встрани. Блокиране на geofence гарантира фалшиви негативи, които стигат до мениджъра по средата на пика. Флагване вместо блокиране хваща истината (geofenceOk = false), без да забавя операциите: clock-in минава, мениджърът получава web-push и audit log носи разминаването за преглед. През седмици patternите на флагнати събития изплуват реалното злоупотребяване (отбиване от вкъщи), без да наказват законни работници заради indoor GPS шум.

Валутата следва заведението, не работника

Multi-venue верига, която плаща Лондонския си екип в GBP и Camden екипа в GBP не вижда разликата. Верига със Sofia заведение (BGN) и London заведение (GBP) вижда — и най-чистият модел е един wage ред на (служител, заведение) двойка във валутата на заведението. Така Ordering.Tools го моделира. Без exchange rate полета, без FX drift, без „това 15 GBP или 15 BGN е?“ объркване. Заплатата, която виждате за заведение е каквото служителят печели в това заведение, точка.

Проследяване на заплати, на което счетоводителят ви ще се довери

Задайте ставки, нека персоналът отбива, експортирайте в CSV или XLSX. Всеки ред append-only. Premium функция, включена в Управление на персонала.