Tok rada: E-commerce Fulfillment — Od online narudžbine do isporuke
Uključeni moduli: OmniSales · WooCommerce / Shopify · Magacin · Innoship · Kuriri · Fakture · eFaktura · Povrati · Klijenti · Cenovnici
Ko ga koristi: Operator narudžbina, Magacin, Logistika, Finansije, E-commerce Menadžer
Tipično trajanje: Sati – 1-2 radna dana (od postavljanja online narudžbine do predaje kuriru)
Pregled
Tok rada za e-commerce fulfillment pokriva kompletni životni ciklus narudžbine postavljene u online prodavnici integrovanoj sa CRMConnect-om. Narudžbine dolaze automatski iz WooCommerce-a ili Shopify-ja putem webhookova ili cron sinhronizacije, obrađuju se u OmniSalesu, magacin izvršava komisioniranje i pakovanje, kurir prima paket putem automatski generisanog AWB-a (putem Innoship-a ili direktnog Cargus/FanCourier-a), a kupac prima fakturu i obaveštenje o slanju. Povrati se obrađuju putem posebnog potoka.
Razlika od OmniSales Fulfillment — generičkog toka narudžbina — jeste dvosmerna integracija sa e-commerce platformom: statusi se ažuriraju nazad u WooCommerce/Shopify, kupci se sinhronizuju automatski, a cene kanala se kontrolišu putem Cenovnika.
Dijagram toka (ASCII)
[ONLINE NARUDŽBINA (WooCommerce / Shopify)]
│ webhook → OmniSales → Nova narudžbina
│ ili cron sinhronizacija (u konfigurisanom intervalu)
│ sinhronizacija: klijent, proizvodi, adresa, način plaćanja
│ Status OmniSales: 0 - Nacrt → 1 - Nova
│
↓
[VALIDACIJA NARUDŽBINE]
│ status: 2 - U obradi
│ provera zaliha: qty_available vs qty_ordered
│ provera klijenta: kreiran/podudaranjem u Klijentima
│ ├── Zalihe OK → nastaviti
│ └── Nedovoljno zaliha → upozorenje operatoru → zadržati (9) ili delimična narudžbina
│
↓
[KOMISIONIRANJE I PAKOVANJE]
│ Otpremnica za isporuku generisana automatski
│ Lista pakovanja kreirana iz otpremnice
│ operator magacina: potvrđuje svaki artikal (skeniran ili manuelno kvačica)
│ status magacina: wh_ready_to_deliver
│
↓
[SLANJE — AWB]
│ AWB generisan putem Innoship (preporučeno) ili direktnih kurira
│ nalepnica odštampana → zalepljena na paket
│ Status OmniSales: 4 - Slanje · status magacina: wh_in_transit
│ broj praćenja vraćen nazad u WooCommerce/Shopify (automatska sinhronizacija)
│
↓
[FAKTURISANJE]
│ faktura generisana automatski pri Slanju (ako je create_invoice = uključeno)
│ e-mail sa PDF fakturom + AWB broj → kupac
│ eFaktura → ANAF ako B2B kupac sa važećim PIB-om (automatski)
│
↓
[ISPORUKA POTVRĐENA]
│ Innoship/Kurir praćenje → status liste pakovanja: wh_delivered
│ Status OmniSales: 5 - Isporučeno/Završeno
│ status ažuriran u WooCommerce/Shopify: Završeno
│
├── [POVRAT (ako je primenjivo)]
│ │ kupac zahteva povrat unutar dozvoljenog roka
│ │ operator kreira Primku za povrat robe
│ │ vraćena roba ušla u magacin (ili karantin)
│ │ izdat je kreditni iznos ili vaučer / refund
│
[NARUDŽBINA ZAVRŠENA ✓]
Korak po korak
1. Sinhronizacija narudžbine sa e-commerce platforme
Gde: /admin/omni_sales/order_list · /admin/woocommerce · /admin/myshopify
Narudžbine iz online prodavnice dolaze u CRM na dva načina:
| Metoda | WooCommerce | Shopify | Učestalost |
|---|---|---|---|
| Webhook (preporučeno) | Pri postavljanju narudžbine — automatski push | Pri postavljanju narudžbine — automatski push | Realno vreme |
| Cron sinhronizacija (rezerva) | Pokreće se periodično; preuzima nove narudžbine | Pokreće se periodično; preuzima nove narudžbine | Konfigurisano (npr. 15 min) |
| Manuelna sinhronizacija | Dugme u /admin/woocommerce/stores |
Dugme u /admin/myshopify |
Na zahtev |
Šta se automatski sinhronizuje:
- Podaci o narudžbini: proizvodi, količine, cene, popusti, način plaćanja, adresa isporuke
- Kupac: ako postoji u CRM-u po e-mailu → podudaranje; ako ne → automatski kreiran u Klijentima
- Status narudžbine sa online platforme mapira se na OmniSales status (konfigurabilis po kanalu)
Konfiguracija kanala: /admin/omni_sales/omni_sales_channel → Uredi kanal → postavi:
create_invoice: uključeno/isključeno (automatska faktura pri slanju)- Mapiranje statusa e-commerce ↔ OmniSales
- Cenovnik pridružen e-commerce kanalu
- Podrazumevani izvorni magacin
Ključna polja na OmniSales narudžbini:
| Polje | Opis |
|---|---|
id_contact |
Veza sa karticom kupca u Klijentima |
channel_id |
Kanal prodaje (WooCommerce/Shopify/manuelno) |
external_order_id |
ID narudžbine u eksternoj platformi (za dvosmjerna sinhronizacija) |
| Proizvodi + količine + cene | Kopirani sa online narudžbine |
| Adresa isporuke | Čuvana na narudžbini |
| Način plaćanja | Online kartica, pouzećem, transfer itd. |
2. Validacija narudžbine i provera zaliha
Gde: /admin/omni_sales/order_list → otvoriti narudžbinu
Statusi OmniSales narudžbine:
| Kod | Status | Opis | Potrebna akcija |
|---|---|---|---|
| 0 | Nacrt | Nova nepotvrđena narudžbina | Pregled operatora |
| 1 | Nova | Unesena u sistem, čeka obradu | — |
| 2 | U obradi | Provera zaliha i potvrda | Operator validira |
| 3 | Potvrđena | Potvrđena, sprema za magacin | Otpremnica auto-generisana |
| 4 | Slanje | Paket preuzet od kurira | AWB izdat |
| 5 | Isporučeno | Isporučeno i završeno | — |
| 8 | Otkazano | Otkazano | Zalihe oslobođene |
| 9 | Na čekanju | Privremeno suspendovano | Manuelna intervencija |
| 14 | Plaćeno | Plaćeno (korisno za uprednji kartični payment) | — |
| 15 | Spremno | Spremo za isporuku | Magacin potvrđuje |
Provera zaliha:
Sistem proverava dostupnost za svaku liniju proizvoda pre kreiranja otpremnice:
if inventory_manage.inventory_number < ordered_quantity:
flag_export_warehouse = 0 → otpremnica blokirana, upozorenje operatoru
Ako zalihe nisu dovoljne:
- Narudžbina prelazi u status Na čekanju (9)
- Operator vidi upozorenje u korisničkom interfejsu
- Opcije: delimična isporuka (
type_of_delivery = 'partial'), hitna nabavka ili otkazivanje
Odobravanje narudžbine (opciono):
Ako je omogućeno na kanalu: approve_status → 0 (na čekanju) → 1 (odobreno) → -1 (odbijeno). Korisno za narudžbine visoke vrednosti ili nove kupce bez istorije narudžbina.
3. Komisioniranje i pakovanje — priprema paketa
Gde: /admin/warehouse/manage_delivery · /admin/warehouse/manage_packing_list
3.1 Otpremnica za isporuku
Kreiranje:
- Automatski — kada narudžbina dostigne status Potvrđena (3) ili Slanje (4) (ako je opcija omogućena na kanalu)
- Manuelno — iz potvrđene narudžbine → dugme Generiši otpremnicu
Statusi otpremnice:
| Status | Opis |
|---|---|
ready_for_packing |
Kreirana, čeka komisioniranje u magacinu |
packed |
Proizvodi zapakovani, lista pakovanja kreirana |
Tipovi isporuke:
total— kompletna isporuka odjednompartial— ako nisu svi proizvodi dostupni; kasnija segunda otpremnica/lista pakovanja
3.2 Lista pakovanja
Kreiranje: Iz otpremnice → dugme Kreiraj Listu pakovanja
Operator magacina:
- Uzima listu za komisioniranje proizvoda
- Fizički potvrđuje svaki artikal (skeniranje barkoda ili manuelna kvačica)
- Pakuje paket i popunjava dimenzije
Obavezna polja za generisanje AWB-a:
| Polje | Gde popuniti | Napomene |
|---|---|---|
| Težina (kg) | Lista pakovanja → izmena | Obavezno za svakog kurira |
| Dužina (cm) | Lista pakovanja → izmena | Obavezno Innoship/Cargus/FanCourier |
| Širina (cm) | Lista pakovanja → izmena | Obavezno |
| Visina (cm) | Lista pakovanja → izmena | Obavezno |
| Usluga kurira | Lista pakovanja → izbor | Standardna, Express, Isti dan itd. |
| Adresa isporuke | Kopirana sa narudžbine | Može se menjati ako kupac saopšti drugu adresu |
Statusi liste pakovanja:
| Status | Opis |
|---|---|
wh_ready_to_deliver |
Kreirana, čeka AWB |
wh_in_transit |
AWB generisan, paket preuzet od kurira |
wh_delivered |
Potvrđena isporuka od kurira |
Delimično pakovanje: type_of_packing_list = 'partial' — isporučiti ono što je dostupno sada, ostatak sledi. Kupac prima posebno obaveštenje za svaki paket.
4. Generisanje AWB-a za slanje
Gde: Dugme Generiši AWB iz odobrene liste pakovanja
Opcija A — Innoship (agregator)
URL konfiguracije: /admin/innoship/settings
Kuriri podržani putem Innoship-a: Fan Courier, DPD, Cargus, Sameday, GLS, DHL i drugi (prema aktivnim ugovorima sa Innoship-om).
Preduslovi:
- Konfigurisani
innoship_api_keyiinnoship_external_id - Kurir i usluga izabrani u listi pakovanja
- Popunjene dimenzije i težina
- Validna adresa isporuke u bazi podataka Innoship-a (prepoznata opština)
Šta se dešava kada se generiše AWB:
- CRM šalje zahtev ka Innoship API-ju sa podacima o paketu
- Innoship vraća: AWB broj + kod za praćenje
- CRM kreira zapis u
wh_omni_shipments - Status liste pakovanja →
wh_in_transit - Status OmniSales narudžbine →
Slanje (4) - Status ažuriran u WooCommerce/Shopify automatski (dvosmjerna sinhronizacija)
- AWB dostupan za štampanje kao A4 PDF ili termal nalepnica 100×150mm
- Zapis kreiran u
innoship_audit_log
Opcija B — Direktni kuriri (bez agregator)
URL: /admin/couriers
| Kurir | Zahtev |
|---|---|
| Cargus | Direktni ugovor + konfigurisani API ključ Cargus |
| Fan Courier | Direktni ugovor + FanCourier API akreditivi |
Prednost: bez provizije agregatora. Nedostatak: manje kurira dostupno, svaki konfigurisan posebno.
| Rešenje | Dostupni kuriri | Kada koristiti |
|---|---|---|
| Innoship | Fan Courier, DPD, Cargus, Sameday, GLS, DHL + drugi | Imate Innoship ugovor i želite fleksibilnost sa više kurira |
| Direktni kuriri | Cargus, Fan Courier | Imate direktne ugovore i ne želite posrednika |
Praćenje: Sa liste AWB-ova (/admin/innoship/awb ili /admin/couriers/awb) status se ažurira automatski putem periodičnog pollinga.
5. Fakturisanje — izdavanje fiskalnog dokumenta
Gde: /admin/invoices
Načini generisanja fakture:
| Način | Kada | Konfiguracija |
|---|---|---|
| Automatski pri Slanju | Kada OmniSales narudžbina dostigne status 4 | create_invoice = on na kanalu |
| Automatski pri potvrdi plaćanja | Na statusu Plaćeno (14) | Korisno za prethodni online kartični payment |
| Manuelno | Operator generiše iz narudžbine | Dugme Kreiraj Fakturu |
Sadržaj fakture:
- Linije proizvoda sa količinama i cenama iz narudžbine
- Primenjeni popusti (iz Cenovnika ili manuelno)
- PDV po konfiguraciji proizvoda
- Podaci kupca (adresa fakturisanja iz profila kupca)
Obaveštenje kupca: Pri izdavanju fakture: automatski e-mail sa priloženim PDF-om fakture + AWB broj za praćenje.
eFaktura (B2B sa PIB-om)
Ako je kupac pravno lice sa važećim PIB-om:
- eFaktura automatski generisana u XML formatu prema ANAF-u
- Automatski preneta ANAF-u putem modula eFaktura
- ANAF broj registracije vraćen i sačuvan na fakturi
Gde proveriti: /admin/invoices → faktura → kartica eFaktura → status prenosa
6. Potvrda isporuke
Automatsko praćenje: Innoship ili direktni kurir potvrđuje isporuku putem API-ja → statusi ažurirani automatski:
| Dokument | Prethodni status | Konačni status |
|---|---|---|
| Lista pakovanja | wh_in_transit |
wh_delivered |
| OmniSales narudžbina | Slanje (4) |
Isporučeno (5) |
| WooCommerce/Shopify narudžbina | U obradi/Poslato | Završeno |
Zalihe se definitvno smanjuju iz magacina kada je otpremnica odobrena (ne pri fizičkoj isporuci). Pri potvrdi kurira → samo ažuriranja statusa, ne zalihe.
7. Povrati — Potok povrata robe
Gde: /admin/warehouse/manage_order_return_receipt
Rok za povrat: konfigurabilis po kanalu (podrazumevano 30 dana od isporuke).
Koraci toka povrata:
| Korak | Akcija | Ko |
|---|---|---|
| 1 | Kupac zahteva povrat (e-mail, telefon, portal) | Kupac |
| 2 | Operator proverava prihvatljivost (unutar roka, nekorišćen proizvod) | Operator narudžbina |
| 3 | Primka za povrat kreirana u CRM-u (povezana sa originalnom narudžbinom) | Operator |
| 4 | Kupac šalje paket nazad (AWB za povrat ako je primenjivo) | Kupac |
| 5 | Magacin prima vraćenu robu | Magacin |
| 6 | Vraćena roba unesena u magacin (ili karantin) | Automatski pri odobravanju |
| 7 | Izdat kreditni iznos ILI obrađen vaučer/refund | Finansije |
Tipovi povrata:
| Tip | Opis |
|---|---|
fully |
Cela narudžbina vraćena |
partially |
Deo proizvoda vraćen |
manual |
Manuelno prilagođavanje (npr. neispravan proizvod bez fizičkog povrata) |
Relevantna tabela: wh_order_returns → original_order_id (veza sa OmniSales narudžbinom)
Kreditni iznos: Izdat automatski ili manuelno iz Primke za povrat → pojavljuje se u finansijskoj istoriji kupca.
Šta se kreira automatski
| Okidački događaj | Automatski kreiran dokument | Uslov |
|---|---|---|
| Narudžbina postavljena u WooCommerce/Shopify | OmniSales Narudžbina + Kupac (ako je nov) | Aktivan webhook ili cron sinhronizacija |
| Narudžbina → status Potvrđena (3) | Otpremnica sa linijama narudžbine | Auto-kreiranje opcija omogućena na kanalu |
| Lista pakovanja odobrena + Generiši AWB | wh_omni_shipments, Innoship zapis, AWB nalepnica |
Innoship/Kurir API konfigurisan |
| AWB generisan | Status narudžbine → Slanje (4), sinhronizacija u WooCommerce/Shopify | — |
Narudžbina → status Slanje (4) sa create_invoice = on |
Faktura sa linijama narudžbine | create_invoice = on na kanalu |
| Faktura izdata + B2B kupac sa PIB-om | eFaktura XML poslata ANAF-u | Modul eFaktura aktivan |
| Kurir potvrdi isporuku | Status → Isporučeno (5); sinhronizacija na online platformi | Innoship praćenje polling |
| Primka za povrat odobrena | Stanje vraćeno u magacin | Manuelno odobravanje |
Gde tok može da zastane
| Problem | Verovatni uzrok | Rešenje |
|---|---|---|
| Narudžbina se ne pojavljuje sa WooCommerce-a | Webhook nije konfigurisan ili cron zaustavljen | Proveriti /admin/woocommerce/stores → URL webhookа; restartovati cron |
| Narudžbina se ne pojavljuje sa Shopify-ja | API akreditivi istekli ili Shopify webhook neaktivan | Ponovo povezati prodavnicu iz /admin/myshopify |
| Kupac nije automatski kreiran | Duplikati e-maila ili nedostaje obavezno polje | Proveriti mapiranje polja u podešavanjima kanala |
| Otpremnica nije generisana | Opcija auto-kreiranja onemogućena na kanalu | Omogućiti iz /admin/omni_sales/omni_sales_channel → Uredi |
| Otpremnica blokirana (stanje 0) | Nedovoljne zalihe u magacinu | Proveriti primke na čekanju; napraviti korekciju zaliha ili delimičnu isporuku |
| Innoship AWB greška — nepoznata opština | Pogrešno napisana adresa kupca | Urediti adresu; proveriti da li je opština u bazi podataka Innoship-a |
| AWB greška — nedostaju dimenzije | Polja za težinu/dužinu/širinu/visinu nisu popunjena | Popuniti sva 4 obavezna polja u listi pakovanja |
| Faktura nije automatski generisana | create_invoice = off na kanalu |
Omogućiti iz /admin/omni_sales/omni_sales_channel → Uredi kanal |
| eFaktura odbijena od ANAF-a | Neispravan PIB, pogrešan XML, duplikat | Proveriti PIB kupca; manuelno ponovo podneti iz kartice eFaktura |
| Status se ne sinhronizuje nazad u WooCommerce | WooCommerce API akreditivi istekli ili WordPress ažuriran | Ponovo povezati prodavnicu; proveriti dozvole WooCommerce API ključa |
| Delimična lista pakovanja — drugi paket zaboravljen | Nema internog procesa za isporuke u dve tranše | Filteriti narudžbine sa type_of_packing_list = 'partial' i statusom wh_ready_to_deliver |
Relevantni izveštaji
| Izveštaj | URL | Šta pratiti |
|---|---|---|
| OmniSales narudžbine po kanalu | /admin/omni_sales/report |
Obim po WooCommerce/Shopify, statusi, period |
| Revizija sinhronizacije | /admin/omni_sales/diary_sync |
Kompletan zapis sinhronizacije WooCommerce/Shopify, greške |
| AWB-ovi u tranzitu | /admin/innoship/awb |
Status kurira uživo; nedostavljeni AWB-ovi |
| Innoship Audit Log | /admin/innoship/audit |
Sve AWB operacije, API greške |
| Fakture generisane iz online narudžbina | /admin/invoices filtrirano po kanalu |
Finansijsko usklađivanje e-commerce-a |
| Istorija kretanja zaliha | /admin/warehouse/warehouse_history |
Kretanja generisana online narudžbinama |
| Blokirane otpremnice | /admin/warehouse/manage_delivery filter flag_export_warehouse = 0 |
Narudžbine sa nedovoljnim zalihama |
| Povrati | /admin/warehouse/manage_order_return_receipt |
Stopa povrata po periodu, po kanalu |
Uključeni moduli — detaljna dokumentacija
E-commerce i Narudžbine: Omni Sales narudžbine · Kanali prodaje · WooCommerce · Shopify
Magacin: Otpremnice za isporuku · Liste pakovanja · Povrati isporuke · Istorija magacina
Kurir: Innoship kuriri
Finansije: Fakture · Cenovnici
Kupci: Klijenti
Povezani tokovi rada: OmniSales Fulfillment · Nabavka do plaćanja · Magacin Prijem → Izdavanje