CRMconnect Azuvio · Docs

Tok rada: Ketering — Od upita do fakture

Uključeni moduli: Ketering (Događaji · Meniji · Stavke · Paketi · Osoblje · Sastojci) · Predračuni · Fakture · Projekti
Ko ga koristi: Menadžer keteringa · Kuvar · Koordinator događaja · Finansije
Tipično trajanje: Upit → Potvrda = 1–7 dana · Događaj = 1 dan · Fakturisanje = odmah nakon događaja

Pregled

Modul Upravljanje keteringom pokriva kompletan ciklus ketering događaja: od inicijalnog upita, kroz konfiguraciju menija i paketa, potvrdu, realizaciju događaja sa dodeljivanjem osoblja, sve do generisanja predračuna i fakturisanja.

Interno izračunavanje troška i marže (trošak sastojaka vs. prodajna cena) je dostupno, ali vidljivo isključivo korisnicima sa posebnom dozvolom catering_view_costs.

Magacin: Modul ima sopstveni interni sistem sastojaka (catering_ingredients) sa referentnim stanjem zaliha. Ne integriše se sa osnovnim modulom Magacin — smanjenje zaliha se ne dešava automatski kada se izvede događaj.

Ne postoji automatski tok odobravanja. Bilo koji zaposleni sa dozvolom catering_events → edit može promeniti status događaja na bilo koju vrednost, bez logike prolaza.


Dijagram toka

[PODEŠAVANJE — admin, jednom]
  │
  ├── Tipovi događaja (kategorije: Venčanje, Korporativno, Konferencija, itd.)
  ├── Dijetetski tipovi + Alergeni (nutritivne reference po proizvodu)
  ├── Kategorije menija (hijerarhijske) + Sekcije menija (grupe unutar menija)
  ├── Sastojci (sa avg_cost_per_unit, stock_on_hand, reorder_level)
  ├── Stavke menija (sa unit_cost, unit_price, dijetetskim tipovima, alergenima, sastojcima)
  ├── Šabloni menija (kolekcije stavki grupisane po sekcijama)
  ├── Paketi (fiksni paket sa qty_per_guest po stavci, min/max gostiju)
  └── Uloge osoblja (Šef kuhinje, Kuvar, Konobar, Barmen, Menadžer, Vozač — 6 unapred sačuvanih)
  │
  ↓
[1. UPIT]
  │
  ├── Ketering → Događaji → Novi događaj
  ├── Obavezna polja: event_name, event_type_id, event_start, event_end
  ├── Klijent: client_id (postojeći klijent) ILI lead_id (potencijalni klijent)
  │     ⚠ Predračun/Faktura se mogu generisati samo ako postoji client_id, ne lead_id
  ├── guest_count_expected: procenjeni broj gostiju
  ├── Mesto: venue_name, venue_address
  ├── Opciono: create_project=1 → automatski kreira projekat vezan za događaj
  └── Početni status: upit
  │
  ↓
[2. KONFIGURACIJA MENIJA]
  │
  ├── Događaji → {događaj} → kartica Meni → Dodeli meni / Paket
  ├── Odabir šablona menija ILI paketa
  ├── Mod cena:
  │     ├── per_person: cena × guest_count_expected po stavci
  │     ├── fixed: fiksna ukupna cena
  │     └── package: cena iz paketa (price_per_person × gosti)
  ├── Dodatna polja: množilac (marža), vikend doplata, napomene
  ├── Stavke iz šablona se kopiraju u catering_event_menu_items
  │     (snimak sa trenutnom verzijom stavke + snimak dijetetskih/alergenskih podataka JSON)
  └── Sve izmene stavki → evidentirane u catering_event_menu_history
  │
  ↓
[3. GENERISANJE PREDRAČUNA]
  │
  ├── Događaji → {događaj} → dugme Generiši predračun
  ├── Automatski kreira standardni Predračun u CRM-u sa stavkama:
  │     ├── Zaglavlja sekcija (qty=0, rate=0)
  │     ├── Stavke artikala: qty = guest_count_expected, rate = unit_price
  │     └── Stavke rada osoblja: qty = sati, rate = hourly_rate
  ├── estimate_id sačuvan na događaju
  ├── Status događaja: upit → ponuđen
  └── Predračun se može izmeniti, poslati klijentu, potpisati
  │
  ↓
[4. POTVRDA]
  │
  ├── Klijent prihvata predračun
  ├── Status događaja: ponuđen → potvrđen (menja ručno zaposleni)
  └── Opciono: dodeljivanje osoblja za događaj (smena, uloga, procenjeni sati)
  │
  ↓
[5. REALIZACIJA DOGAĐAJA]
  │
  ├── Status događaja: potvrđen → u toku
  ├── Dodeljeno osoblje vidi svoju ulogu i smenu
  ├── Status dodeljivanja osoblja: na čekanju → potvrđen/odbijen → završen
  └── Interne napomene: catering_event_notes (visible_to_client opciono)
  │
  ↓
[6. ZAVRŠETAK + FAKTURISANJE]
  │
  ├── Status događaja: u toku → završen
  ├── guest_count_final popunjen (stvaran broj gostiju)
  ├── Događaji → {događaj} → dugme Pretvori u fakturu
  │     → poziva Estimates_model::convert_to_invoice(estimate_id)
  │     → invoice_id sačuvan na događaju
  └── Faktura se prati i plaća kao standardna u Fakturama
  │
  ↓
[INTERNE FINANSIJE — opciono, vidljivo sa catering_view_costs]
  │
  ├── calculate_event_financials(): izračunava interno P&L:
  │     ├── menu.total_cost = qty × unit_cost po stavci
  │     ├── menu.total_revenue = qty × unit_price po stavci
  │     ├── labor.total_cost = sati × hourly_rate po zaposlenom
  │     └── rezime: net_profit, profit_margin
  └── Vidljivo SAMO sa dozvolom catering_view_costs

[DOGAĐAJ FAKTURISAN ✓ · P&L IZRAČUNAT ✓]

Korak po korak

1. Početna konfiguracija (admin)

Redosled konfiguracije:

1a. Tipovi događaja

Gde: Ketering → Podešavanja → Tipovi događaja → Dodaj

Svaki tip ima boju pozadine i teksta (za kalendar). Barem jedan tip je obavezan pri kreiranju događaja.

1b. Dijetetski tipovi i alergeni

Gde: Ketering → Podešavanja → Dijetetski tipovi / Alergeni

Nutritivne reference (bez glutena, veganski, halal, itd.) i alergeni (orašasti plodovi, mlečni proizvodi, itd. — sa severity: blago/umereno/teško). Dodaju se stavkama menija.

1c. Kategorije menija (hijerarhijske) i sekcije

Gde: Ketering → Podešavanja → Kategorije / Sekcije

Kategorije su hijerarhijske (parent_id). Sekcije grupišu stavke unutar menija (npr.: "Predjela", "Glavno jelo", "Desert").

1d. Sastojci

Gde: Ketering → Sastojci → Dodaj

Polje Opis
name Naziv sastojka
unit Jedinica mere
avg_cost_per_unit Prosečna cena po jedinici
stock_on_hand Raspoložive zalihe (referentne — ne smanjuju se automatski)
reorder_level Nivo ponovne narudžbine (vizuelno upozorenje)
supplier_id Dobavljač (iz catering_suppliers)

1e. Stavke menija

Gde: Ketering → Stavke menija → Dodaj

Polje Opis
item_name Naziv proizvoda
category_id Kategorija
unit_cost Trošak po porciji (trošak sastojaka)
unit_price Prodajna cena po porciji
default_portion_size Veličina porcije
prep_time_minutes Vreme pripreme

Kontrola verzija: Ako se unit_cost ili unit_price promene, version se automatski povećava. Snimak u trenutku dodeljivanja događaju se čuva u item_version u catering_event_menu_items.

Dodajte dijetetske tipove, alergene i sastojke (sa qty_per_portion) svakoj stavci.

1f. Šabloni menija i paketi

Meniji (Ketering → Meniji → Dodaj): kolekcija stavki organizovanih po sekcijama. Kada se dodeli događaju, stavke se kopiraju sa snimkom.

Paketi (Ketering → Paketi → Dodaj):

Polje Opis
package_name Naziv paketa
price_per_person Cena po osobi
min_guests / max_guests Minimalni/maksimalni broj gostiju
Stavke Dodaju se sa qty_per_guest po stavci

1g. Uloge osoblja

Gde: Ketering → Podešavanja → Uloge osoblja

6 unapred sačuvanih uloga: Šef kuhinje (45$/h), Kuvar (35$/h), Konobar (25$/h), Barmen (30$/h), Menadžer (40$/h), Vozač (20$/h). Dodajte prilagođene uloge sa default_hourly_rate.


2. Kreiranje događaja

Gde: /admin/catering_management_module/events → Novi događaj

Ključna polja:

Polje Obavezno Opis
event_name Da Naziv događaja
event_type_id Da Tip događaja
event_start / event_end Da Datum i vreme početka/kraja
client_id Preporučeno Postojeći klijent (obavezan za generisanje predračuna/fakture)
lead_id Alternativa Lid (bez mogućnosti generisanja finansijskih dokumenata)
guest_count_expected Da Procenjeni broj gostiju (koristi se u izračunavanju cene po osobi)
venue_name / venue_address Da Lokacija događaja
dietary_notes / allergen_summary Ne Opšte dijetetske napomene za događaj
create_project Ne 1 = automatski kreira povezani CRM projekat

3. Statusi događaja

Status Značenje Prelaz
enquiry Inicijalni upit → ponuđen pri generisanju predračuna
quoted Predračun generisan i poslat → potvrđen pri prihvatanju
confirmed Rezervacija potvrđena → u toku na datum događaja
in_progress Događaj u toku → završen po završetku
completed Događaj završen → generisanje fakture
cancelled Otkazano (terminalno)
lost Izgubljeno (terminalno)

Svi prelazi su ručni — bilo koji zaposleni sa catering_events → edit može postaviti bilo koji status.


4. Dodeljivanje osoblja za događaj

Gde: Događaji → {događaj} → kartica Osoblje → Dodaj osoblje

Polje Opis
staff_id Dodeljeni zaposleni
role Uloga na događaju
shift_start / shift_end Radna smena
hours Ukupni sati (automatski izračunati iz shift_start/end)
hourly_rate Satnica (prethodno popunjena iz uloge osoblja)

Statusi dodeljivanja: na čekanjupotvrđen / odbijenzavršen

Detekcija konflikata: Sistem automatski proverava da li zaposleni ima preklapajuće dodeljivanje (check_scheduling_conflicts()) pre čuvanja.

Obaveštavanje osoblja: notify_all_staff() postoji u kodu, ali ne šalje email — samo beleži u log aktivnosti. Obavestite osoblje ručno.


5. Generisanje predračuna i fakture

Generiši predračun: Događaji → {događaj} → dugme Generiši predračun

Kreiran predračun uključuje:

  • Zaglavlja sekcija (za vizuelnu organizaciju)
  • Stavke proizvoda: qty = guest_count_expected, rate = unit_price po stavci
  • Stavke rada: qty = sati, rate = hourly_rate po dodeljenom zaposlenom

Predračun se pojavljuje u /admin/estimates i može se izmeniti, poslati i potpisati kao svaki standardni predračun.

Pretvori u fakturu: Događaji → {događaj} → dugme Pretvori u fakturu (dostupno nakon Generiši predračun)

Poziva Estimates_model::convert_to_invoice($estimate_id) → standardna faktura u /admin/invoices.


6. Interno P&L izračunavanje

Dostupno isključivo sa dozvolom catering_view_costs:

Metrika Izračunavanje
menu.total_cost unit_cost × portion_per_guest × guest_count_expected po stavci
menu.total_revenue unit_price × portion_per_guest × guest_count_expected po stavci
labor.total_cost sati × hourly_rate po dodeljenom zaposlenom
net_profit total_revenue - total_cost - labor_cost
profit_margin net_profit / total_revenue × 100

Eksterni troškovi (expenses.total_cost) su rezervisano mesto u kodu — nisu implementirani. Spoljni troškovi se ne mogu direktno dodati u P&L izračunavanje.


Potrebne dozvole

Dozvola Pristup
catering_events → view/create/edit/delete Upravljanje događajima
catering_menus → view/create/edit/delete Šabloni menija
catering_menu_items → view/create/edit/delete Ketering proizvodi
catering_packages → view/create/edit/delete Paketi
catering_categories → view/create/edit/delete Kategorije
catering_allergens / catering_dietary_types Nutritivni podaci
catering_view_costs Pregled troškova i P&L marži
estimates → create Generisanje predračuna iz događaja
invoices → create Pretvaranje u fakturu

Česte greške

Problem Uzrok Rešenje
Dugme Generiši predračun se ne pojavljuje client_id nedostaje (događaj ima samo lead_id) Konvertujte lid u klijenta i ažurirajte događaj sa client_id
Cena na predračunu je pogrešna unit_price na stavci promenjen nakon dodeljivanja Modul uzima snimak pri dodeljivanju — koristite Regeneriši predračun da biste uzeli trenutne cene
Osoblje se ne pojavljuje u padajućem meniju Nisu konfigurisane uloge osoblja Dodajte barem jednu ulogu osoblja
Zalihe sastojaka se ne smanjuju Ispravno ponašanje — zalihe su referentne, ne transakcione Ručno oduzimajte iz stock_on_hand nakon događaja
P&L nije vidljiv Nedostaje dozvola catering_view_costs Dodelite specifičnu dozvolu ulozi
Obaveštavanje osoblja ne radi notify_all_staff() zapravo ne šalje email Obavestite osoblje ručno ili koristite standardna CRM obaveštenja

Reference modula

  • Predračuni — predračuni generisani iz događaja
  • Fakture — fakture generisane iz događaja
  • Projekti — projekat opciono vezan za događaj
  • Ketering — dokumentacija modula