E
Brak wyników dla „{{ searchQuery }}”.
Powiadomienia
Wszystko pod kontrolą ✓
Przełącz użytkownika (prototyp)

Cześć, {{ currentUser.name.split(' ')[0] }} · {{ formatDatePL(relDate(0)) }}

Najbliższe eventy
Wymaga uwagi

{{ selectedEvent.name }}

{{ clientById(selectedEvent.clientId)?.name }} · {{ formatDatePL(selectedEvent.date) }} {{ selectedEvent.time }} · {{ selectedEvent.location }} · {{ selectedEvent.attendees }} uczestników · koordynator: {{ employeeName(selectedEvent.coordinatorId) }}
{{ EVENT_STATUS_LABELS[selectedEvent.status] }}
{{ selectedEvent.name }}
Teraz
{{ selectedEvent.timeline[dayModeIndex].time }}
{{ selectedEvent.timeline[dayModeIndex].label }}
Dalej
{{ selectedEvent.timeline[dayModeIndex+1].time }} — {{ selectedEvent.timeline[dayModeIndex+1].label }}
Zespół
{{ employeeName(t.employeeId) }} · {{ t.roleAtEvent }}
Problemy
{{ p.reason }}{{ p.status==='OPEN'?'Otwarty':p.status==='IN_PROGRESS'?'W trakcie':'Rozwiązany' }}

{{ p.comment }}

{{ p.reportedBy }} · {{ p.reportedAt }}
Kontakty
Koordynator
{{ employeeName(selectedEvent.coordinatorId) }}
Klient
{{ clientById(selectedEvent.clientId)?.contactPerson }}
{{ s.type }}
{{ s.name }}
Harmonogram — najbliższe 7 dni
{{ formatDatePL(relDate(offset-1)) }} · dziś
Brak zaplanowanych zmian.
{{ ev.name }}
{{ employeeName(t.employeeId) }} · {{ t.roleAtEvent }} {{ t.start }}–{{ t.end }}

{{ selectedClient.name }}

{{ selectedClient.contactPerson }} · {{ selectedClient.email }} · {{ selectedClient.phone }}
Lifetime value: {{ formatPLN(clientLifetimeValue(selectedClient)) }}
Historia eventów
Oferty
Komunikacja
{{ a.kind==='call'?'Telefon':a.kind==='email'?'Email':'Spotkanie' }}{{ a.at }}

{{ a.text }}

Notatki
{{ a.author }}{{ a.at }}

{{ a.text }}

{{ e.name.split(' ').map(p=>p[0]).slice(0,2).join('') }}
{{ e.name }}
{{ e.jobRole }}
{{ e.phone }}
{{ employeeIsBusyToday(e.id) ? 'Zajęty dziś' : 'Dostępny' }} {{ employeeAssignedEvents(e.id).length }} eventów · {{ employeeTotalHours(e.id) }} h
DostawcaTypEventKosztStatus
{{ s.name }} {{ s.type }} {{ s.eventName }} {{ formatPLN(s.cost) }} {{ SUPPLIER_STATUS_LABELS[s.status] }}
SprzętIlośćDostępneStan
{{ eq.name }} {{ eq.quantity }} {{ eq.condition==='DAMAGED'||eq.condition==='RETIRED' ? '—' : equipmentAvailableQty(eq) }} {{ CONDITION_LABELS[eq.condition] }}
EventPrzychódKosztyZyskPłatność
{{ ev.name }} {{ formatPLN(ev.finance.revenue) }} {{ formatPLN(ev.finance.costs.reduce((s,c)=>s+c.amount,0)) }} {{ formatPLN(eventProfit(ev)) }} {{ PAYMENT_LABELS[ev.finance.paymentStatus] }}
Rentowność eventów
{{ row.event.name }}{{ formatPLN(row.profit) }} ({{ row.margin }}%)
Obciążenie pracowników
{{ row.employee.name }}{{ row.hours }} h
Status eventów
{{ EVENT_STATUS_LABELS[row.status] }}{{ row.count }}
Automatyzacje (demo)

Automatyzacje działają wyłącznie jako demonstracja UX — w prototypie nic nie jest faktycznie wysyłane.

Pozostałe ustawienia będą dostępne w kolejnej wersji prototypu.
{{ currentUser.name.split(' ').map(p=>p[0]).slice(0,2).join('') }}
{{ currentUser.name }}
{{ currentUser.jobRole }}
Przełącz użytkownika (prototyp)
{{ toast }}

{{ statusDialogTarget === 'CANCELLED' ? 'Anulować event?' : 'Zmienić status eventu?' }}

{{ selectedEvent.name }}

Nowy status: {{ EVENT_STATUS_LABELS[statusDialogTarget] }}

Dodaj zadanie

Przypisz pracownika

Konflikt dostępności

{{ employeeName(Number(assignEmployeeId)) }} jest już przypisany(a) do eventu „{{ assignConflictEvent.name }}” w tym samym dniu.

Dodaj dostawcę

Zarezerwuj sprzęt

Brak dostępnego sprzętu — cały jest zarezerwowany, uszkodzony lub wycofany.

Dodaj koszt

Zgłoś problem

Powód

Dodaj komentarz

Dodaj wpis

Oferta {{ offerPreview.number }}

Event{{ offerPreview.eventName }}
Wartość{{ formatPLN(offerPreview.value) }}
Status

Filtry

Koordynator