Company — moje firma#
Prezentace vlastní firmy provozovatele webu, její rezervační kalendář a agenda zakázek. Nezaměňujte s katalogem cizích firem — to je jiný modul s vlastní sadou zdrojů.
🔴 Zvenčí jen pro administrátorský klíč#
Běžný ani nepřihlášený klíč z tohoto modulu nedostane nic
Všechny akce s HTTP obalem jsou povolené jen roli administrátora — čtení nevyjímaje. Ostatní klíče dostanou zamítnutí (HTTP 403):
404 tu neznamená chybnou adresu
Doménové operace modulu — objednání termínu, dostupnost kalendáře, veřejné výpisy profilu, klientský přehled zakázek, uzávěrka listu, fakturace, archivace — HTTP obal nemají a vracejí 404. Web si je volá vnitřně. Nehledejte v adrese překlep; zvenčí se na ně nedostanete ani s administrátorským klíčem.
Každý zdroj nabízí standardní sadu akcí
get, get-by, get-all, save, update-columns, delete, delete-all —
není-li u něj uvedeno jinak. Podrobně CRUD vzor.
Zdroje#
| Zdroj | Co obsahuje |
|---|---|
company |
firma — jediný prezentovaný záznam |
block |
obsahový blok profilu |
highlight |
vypíchnutý údaj profilu |
reference |
referenční zakázka do portfolia |
team-member |
člen týmu |
service |
položka ceníku |
service-group |
skupina ceníku |
category |
kategorie referencí — strom |
calendar |
rezervační kalendář |
time-slot |
úsek kalendáře — pracovní okno, obsazený čas, zavřený den |
reservation |
rezervace termínu |
work-list |
zakázka — složka práce pro jednoho klienta |
work-sheet |
pracovní list — fakturační dávka uvnitř zakázky |
work-item |
práce — jeden řádek listu |
work-item-comment |
komentář k práci |
Prezentuje se jediná firma#
Který záznam web ukazuje, řídí příznak presented na zdroji company.
Uložení firmy s presented vypne příznak u všech ostatních
Server exkluzivitu vynucuje sám: nastavíte-li příznak jednomu záznamu, ostatním ho tichým zápisem odebere. Nic to nehlásí a v odpovědi to nepoznáte. Prezentovanou firmu proto nepřepínejte hromadným importem.
Tři patra zakázky#
Zakázka se nefakturuje ani neuzavírá jako celek. Uvnitř má pracovní listy a teprve list je fakturační dávka; v listu jsou jednotlivé práce.
work-list je zakázka, ne seznam prací
Název je historický. Práce visí na work-sheet, ne na work-list — cesta k nim
vede přes dva skoky, ne přes jeden.
Cena práce je bez daně a nezapisuje se
price počítá server jako hodiny × sazba, nebo z ručně zadané pevné částky. Sazba
DPH je samostatné pole a připočítává se až na dokladu.
Sazba je snímek, ne odkaz do ceníku
Práce si hodinovou sazbu opíše při založení a dál se nemění. Změna ceníku staré práce nepřepočítá — a je to tak zamýšlené, protože už mohou být na faktuře.
Pole, která zvenčí zapsat nejde#
Část polí je pro externího klienta jen ke čtení. Server je z uloženého požadavku vyhodí a zbytek uloží.
| Zdroj | Nezapisovatelná pole |
|---|---|
work-item |
workSheetId, price |
work-list |
state, closedDatetime |
work-sheet |
state, stateBeforeClosing, bill, closedDatetime, invoicerInvoiceId |
reservation |
state, userId, cancelToken, gdprConsentDatetime, insertIp |
work-item-comment |
userId, byClient, authorName, ip, readDatetime |
calendar |
companyId |
company |
ratingThreadId |
K tomu u většiny zdrojů technická pole deleted, insertDatetime a updateDatetime —
mazat se má akcí delete a časová razítka plní server.
Zahozené pole se neohlásí — odpověď vypadá jako úspěch
success bude true a záznam se uloží, jen bez těch polí. Uložený stav si po
zápisu ověřte čtením, ne z návratové hodnoty.
Stav se proto nedá posunout obyčejným uložením
Uzavření listu, vystavení faktury i potvrzení rezervace jsou vlastní operace se
svými kontrolami. Zvenčí dostupné nejsou — a zápis state je právě proto zakázaný,
aby se nedaly obejít.
Přesun práce mezi listy je zakázaný záměrně
workSheetId by dovolilo vytáhnout hodiny z už vyfakturovaného listu a udělat je
znovu fakturovatelné, nebo je přehodit jinému klientovi.
Rezervace stojí na úsecích kalendáře#
Čas nese time-slot (den, od, do, typ), rezervace na něj jen ukazuje přes timeSlotId.
Horní hranice je výlučná.
Zápisem do time-slot obejdete kontrolu překryvu
Obsazenost, dělení a zkracování úseků řeší doménové operace, které zvenčí nejsou. Ruční zápis úseku o ně přijde a kalendář se může rozejít se skutečností.
Komentáře práce se nemoderují#
Vlákno u práce je konverzace klienta s firmou. Nemá vnořování, schvalování ani nahlašování; text je prostý, nejvýš 5 000 znaků, a příspěvek je vidět hned.
Nepřečtenost se sleduje po stranách, ne po lidech
Komentář se počítá jako přečtený, jakmile ho uvidí kdokoli z protistrany. Firma je jeden subjekt — přečtení jedním pracovníkem platí za všechny.