CRMconnect Azuvio · Docs

Tok rada: Provizija prodajnog agenta

Uključeni moduli: Fakture · Plaćanja · Provizija (Polisa · Primenjivo osoblje · Hijerarhija · Priznanica) · Prodajni agent · Ciljevi · DataPulse
Ko ga koristi: Menadžer prodaje · Prodajni agenti · Administrator finansija
Tipično trajanje: Trenutno po plaćanju fakture (automatski okidač) + mesečni ciklus za isplatu provizije

Pregled

Modul Provizija automatski izračunava proviziju koja se duguje prodajnom agentu u trenutku kada je faktura plaćena. Nikakva manuelna akcija nije potrebna za samo izračunavanje — sve se pokreće okidačem after_payment_added. Kompletan tok rada pokriva: konfiguraciju polise provizije, dodeljivanje agenata politikama, automatsko izračunavanje pri plaćanju, pregled akumuliranih provizija i stvarnu isplatu putem izdavanja Priznanice o proviziji.

Napomena: Provizija se izračunava samo na standardnim CRM fakturama (tblinvoices). Fakture iz modula Prodajnog agenta (sa_sale_invoices) ne pokreću proviziju.


Dijagram toka

[KONFIGURACIJA — samo jednom]
  │
  ├── Polisa provizije (tip 1–5, vremenski okvir, procenat/skala)
  ├── Primenjivo osoblje → dodeljivanje agenta polisi
  ├── Hijerarhija (opciono) → koordinator prima % agentove provizije
  └── Opšte opcije → calculate_after_days · payment_trigger_mode
  │
  ↓
[FAKTURISANJE]
  │
  ├── Faktura kreirana → sale_agent postavljen na fakturi (ili na klijentu/grupi)
  └── Status fakture: Nacrt → Poslata
  │
  ↓
[PLAĆANJE FAKTURE — automatski okidač]
  │
  ├── Plaćanje evidentirano → okidač after_payment_added se aktivira
  ├── Sistem proverava: starost fakture ≥ calculate_after_days?
  ├── Sistem proverava: payment_trigger_mode?
  │     'partial_allowed' (podrazumevano) → svako plaćanje > 0 generiše proviziju
  │     'full_only' → provizija samo ako zbir plaćanja = ukupan iznos fakture
  ├── Sistem proverava: faktura prihvatljiva? (nije poništena, važeći status)
  └── Sistem razrešava agenta: sale_agent na fakturi → customer_admin klijenta
        → commission_salesadmin_group (grupa klijenata → agent)
  │
  ↓
[PROVIZIJA GENERISANA]
  │
  ├── Red kreiran u tblcommission: staffid, invoice_id, amount, paid=0
  ├── Tipovi 1–4: izračunato odmah po fakturi
  └── Tip 5 (mesečni/marža): izračunato cronom na commission_month_close_day
  │
  ↓
[ODOBRAVANJE / PREGLED]
  │
  ├── Menadžer → /admin/commission → vidi provizije sa paid=0
  ├── Agent → vidi svoje provizije (dozvola commission_manage → view)
  └── Izveštaji: commission_chart · staff_monthly_dashboard
  │
  ↓
[ISPLATA PROVIZIJE]
  │
  ├── Menadžer kreira Priznanicu o proviziji: bira neplaćene provizije
  ├── Priznanica može biti konvertovana u Trošak (za računovodstvenu evidenciju)
  └── Izabrane provizije → paid=1 u tblcommission
  │
  ↓
[PROVIZIJA PLAĆENA ✓]

Korak po korak

1. Inicijalna konfiguracija (admin)

1a. Polisa provizije

Gde: /admin/commission → Polisa provizije → Nova polisa

Postoji 5 tipova polise (commission_policy_type):

Tip Naziv Kako funkcioniše
1 Eskalonajući — ukupan iznos fakture Različiti procenti po nivoima vrednosti ukupne fakture
2 Ravni procenat Fiksni procenat primenjen na ukupan iznos fakture (ili profit, ako je amount_to_calculate=1)
3 Po Proizvodu sa nivoima količina Različiti procenti po proizvodu na osnovu količine
4 Eskalonajući po Proizvodu Skala na vrednostima pojedinačnih proizvoda
5 Mesečna marža (mesečno osoblje) Izračunava se krajem meseca na osnovu neto marže; zahteva staff_margin_settings JSON

Obavezna polja pri kreiranju:

Polje Obavezno Napomene
name Da Opisni naziv polise
policy_scope Da vendor (za dobavljače/klijente) ili staff (za zaposlene)
from_date / to_date Da Period važenja polise
commission_type Da percentage ili fiksni iznos
payment_trigger_mode Da partial_allowed (podrazumevano) ili full_only
calculate_after_days Ne Dani čekanja posle plaćanja pre izračunavanja provizije (0 = odmah)
amount_to_calculate Ne 0 = ukupan iznos fakture, 1 = profit (razlika od troška proizvoda)
commission_tax_mode Ne without_tax (podrazumevano) ili with_tax

Važno: Ako je calculate_after_days negativan, sistem automatski koristi 14 dana.

1b. Dodeljivanje agenta polisi

Gde: /admin/commission → Primenjivo osoblje → Dodaj

Povezuje zaposlenog (staffid) sa polisom (commission_policy_id) kroz tabelu tblcommission_applicable_staff. Agent može biti dodeljen višestrukim polisama sa različitim datumima.

Za provizije tipa dobavljač/klijent: Primenjivi klijent (postaviti is_client=1 i commission_receiver_vendor_id na kartici klijenta).

1c. Hijerarhija provizija (opciono)

Gde: /admin/commission → Podešavanja → Hijerarhija

Omogućava koordinatoru da prima procenat provizije agenta pod njegovim nadzorom:

Polje Opis
salesman staffid prodajnog agenta
coordinator staffid koordinatora/menadžera
percent % agentove provizije koju prima koordinator

1d. Opšte opcije

Gde: /admin/commission → Podešavanja → Opšte provizije

Opcija Podrazumevana vrednost Opis
commission_payment_trigger_mode partial_allowed Globalno (može se prepisati po polisi)
commission_calculate_after_days 0 Globalni dani čekanja
commission_cron_interval_minutes 1440 (24h) Rezervni cron za propuštene provizije od okidača
commission_month_close_day 1 Dan u mesecu na koji se izračunava tip-5 (za prethodni mesec)

2. Razrešavanje agenta na fakturi

Kada je faktura plaćena, sistem određuje agenta u sledećem redosledu:

  1. invoices.sale_agent — agent postavljen direktno na fakturi
  2. tblcustomer_admins.staff_id — administrativni nalog klijenta (ako je sale_agent prazan)
  3. tblcommission_salesadmin_group — mapiranje grupe klijenata → agent (ako su prve dve prazne)

Napomena: Ako nijedan od tri nije konfigurisan, provizija se ne generiše i nema upozorenja. Uvek proveravati da fakture imaju postavljen sale_agent ili da klijenti imaju administrativni nalog klijenta.


3. Automatsko izračunavanje pri plaćanju

Kada se plaćanje evidentira (/admin/invoices/:id → Dodaj Plaćanje ili putem API-ja), okidač after_payment_added poziva Commission_model::add_commission($payment_id).

Sistemske provere (ako neka ne prođe, provizija se NE generiše):

Provera Detalji
Starost fakture Datum fakture + calculate_after_days ≤ danas
Status fakture Status NE SME biti u [5=otkazana, 6=nacrt, 7=kreditno pismo, 8=interna]
Poništavanje Faktura nema pridruženo kreditno pismo
Mod okidača Ako je full_only: zbir svih plaćanja = ukupan iznos fakture

Rezervni cron: Svakih commission_cron_interval_minutes minuta, zadatak proverava fakture sa plaćanjima koja su propustila okidač i generiše nedostajuće provizije.

Manuelna regeneracija (admin):

  • Na fakturi: dugme Regeneriši Proviziju
  • Masovno: /admin/commission → Ponovo izračunaj (zahteva dozvolu commission → create)

4. Provizije tipa 5 — Mesečna marža

Razlika od tipova 1–4: izračunavanje se ne vrši po plaćanju, već mesečno putem crona.

Na dan commission_month_close_day u mesecu (podrazumevano dan 1), run_staff_monthly_commissions() izračunava za prethodni mesec:

  • Agregira sve plaćene fakture tog meseca po agentu
  • Izračunava neto maržu (sales_net, avg_margin, avg_discount)
  • Primenjuje nivoe iz staff_margin_settings JSON-a
  • Upisuje u tblcommission_staff_monthly (status: draft)
  • Upisuje detalje po fakturi u tblcommission_staff_monthly_detail

5. Pregled i odobravanje provizija

Gde: /admin/commission

Sekcija Ko vidi Šta prikazuje
Lista provizija Admin + commission_manage → view Sve provizije sa paid=0
Mesečna kontrolna tabla osoblja Admin + commission_manage → view Mesečni rezime po agentu, status draft
Grafikon provizija Admin + commission_manage → view Grafikoni trenda provizija
Agent (sopstvene) Osoblje sa commission_manage → view Samo sopstvene provizije

6. Isplata provizije

Gde: /admin/commission → Priznanice o proviziji → Nova priznanica

Koraci:

  1. Izabrati neplaćene provizije (paid=0) za uključivanje u isplatu
  2. Popuniti: amount, paymentmode, date, note, transactionid
  3. Sačuvati → sistem označava sve izabrane unose u tblcommission sa paid=1
  4. Opciono: označiti Konvertuj u Trošak za automatsko generisanje troška u modulu Troškovi (za računovodstvenu evidenciju)

Potrebne dozvole: commission_receipt → create + commission_receipt → view


Potrebne dozvole

Uloga / Dozvola Pristup
Admin Potpuni pristup svim funkcijama
commission_manage → view Pregled provizija, grafikona, mesečnih izveštaja
commission → create Masovno ponovo izračunavanje
commission → view_setting Pristup Podešavanjima
commission_receipt → view/create/edit/delete Upravljanje priznanicama o plaćanju
commission_applicable_client → view/create/delete Upravljanje primenljivim klijentima

Česti problemi

Problem Uzrok Rešenje
Provizija nije generisana po plaćanju sale_agent nedostaje na fakturi, istekla polisa ili calculate_after_days nije ispunjen Proveriti polje sale_agent na fakturi + datume polise + podešavanje after_days
full_only ne generiše na delimično plaćanje Ispravno ponašanje — provizija se pojavljuje samo pri punom plaćanju Prebaciti na partial_allowed ako želite proviziju na svakoj rati
Provizija generisana duplikat I cron i okidač su se izvršili Sistem proverava postojeći red u tblcommission po invoice_id+staffid pre umetanja — duplikat je blokiran
Agent se ne pojavljuje u padajućem meniju Primenljivog osoblja Korisnik nema aktivnu ulogu Osoblja Proveriti da je korisnik aktivan član Osoblja u sistemu
Tip-5 nije izračunat commission_month_close_day nije prošao ili cron nije pokrenut Proveriti podešavanje dana i verifikovati da je CRM cron aktivan (/admin/misc/cron_jobs)

Reference modula