Ahogyan néhány ügyfél-mezőből a rendszer magától összeállítja a teljes, tételes árajánlatot — a parkettázó vállalkozás példáján, lépésről lépésre.
Szint: kezdő–haladó · Becsült idő: 25–35 perc · Előfeltétel: 3. és 6. fejezet
Ebben a fejezetben
Mire jó a kalkulációs sablon
Előfeltételek (mezők, termékek)
Alap vagy Haladó szerkesztő
A szerkesztő öt blokkja
Változók és függvények
Egy tétel anatómiája
A példa öt tétele + a próba
Ajánlat generálása, tömeges használat
7.1Mire jó a kalkulációs sablon?
Képzeljük el, hogy minden érdeklődőnek kézzel kellene árajánlatot írni: kiszámolni, hány négyzetméter parketta kell, mennyi a szegély, kell-e aljzatkiegyenlítés, hozzáadni a munkadíjat, majd összeadni. Tíz érdeklődőnél ez tíz külön számolgatás — és minden számolásba becsúszhat hiba.
A kalkulációs sablon ezt automatizálja. Egyszer felállítasz egy szabályrendszert — „a parketta mennyisége a terület, az ára a típustól függ, aljzatkiegyenlítő csak akkor kell, ha az ügyfél kérte" — és onnantól a rendszer minden ügyfélnél a saját adataiból állítja elő a kész, tételes ajánlatot. Egyetlen kattintással.
A lényeg egy mondatban
A kalkulációs sablon egy „recept": megmondod, miből (az ügyfél mezői) és hogyan (képletek) számoljon a rendszer — és utána bárkire alkalmazza.
Ebben a fejezetben a PadlóProfi Kft. szemszögéből építünk fel egy ilyen sablont. A végére nemcsak ezt az egy sablont fogod tudni elkészíteni, hanem érteni fogod a lehetőségeket is — beleértve azokat a kapcsolókat és beállításokat, amelyeket ebben a példában nem is használunk.
A forgatókönyv, amit felépítünk
A PadlóProfi minden érdeklődőről négy dolgot rögzít (ezek a 3. fejezetben létrehozott egyedi mezők), és ebből szeretne automatikus ajánlatot:
Egyedi mező (az ügyfél adatlapján)
Típus
Példaérték (Kovács Bence)
Parkettázandó terület (m²)
Szám
40
Szegély hossza (m)
Szám
26
Aljzatkiegyenlítés kell?
Igen/Nem
Igen
Parketta típusa
Választás (6 opció)
Világos tölgy
A cél: ebből a négy adatból a rendszer állítsa elő az alábbi, tételes ajánlatot — Kovács Bencének nettó 701 200 Ft-ot —, de ugyanez a sablon egy másik ügyfélnél, más adatokkal, automatikusan más összeget adjon.
7.2Két dolog, aminek előbb léteznie kell
A kalkulációs sablon két másik dologra épít, ezért ezeknek már készen kell lenniük:
1) Az egyedi mezők
A fenti négy mezőt a Beállítások → Egyedi mezők alatt hozod létre (Kapcsolat típusú mezőként; lásd 3. fejezet). A sablon képletei ezekre a mezőkre fognak hivatkozni — a mező „belső neve" (slug) alapján, nem a látható címke alapján. Például a „Parkettázandó terület (m²)" mező belső neve parkettazando_terulet_m.
Miért fontos a belső név?
A rendszer az ékezetek és szóközök nélküli, egyszerűsített nevet használja a képletekben. A jó hír: nem kell fejből tudnod — a szerkesztő felsorolja az összes elérhető mezőt a pontos nevével (lásd 7.5). Elég onnan kimásolni.
2) A termékek
A Termékek menüben rögzíted a termékkatalógust — parketták típusonként, aljzatkiegyenlítő, szegélyléc, munkadíj —, nettó egységárral (lásd 6. fejezet). A sablon vagy közvetlenül egy termékre hivatkozik, vagy — ahogy mi tesszük — a product_ar('terméknév') függvénnyel az élő árat kéri le. Így ha később átárazol egy terméket, a sablon már a friss árral számol.
7.3Első lépés: Alap vagy Haladó?
A Kalkulációs sablonok menüben két gomb közül választhatsz. A különbség a rugalmasságban van.
nHsCRM
Kapcsolatok
Ajánlatok
Termékek
Kalkulációs sablonok
Beállítások
Kalkulációs sablonok
Automatikus ajánlatszámítási szabályok
+ Új sablon (alap)+ Új sablon (haladó)
Parkettázás – ajánlat haladó
Automatikus parkettázási ajánlat a kapcsolat 4 egyedi mezőjéből.
7.1. ábra. A Kalkulációs sablonok lista. Jobbra fent a két létrehozó gomb; alul egy kész sablon „kártyája".
Típus
Mikor válaszd?
Alap
Egyszerű, „kattintgatós" szerkesztő. Terméket választasz, mennyiséget adsz meg — képletek nélkül. Akkor jó, ha a mennyiség egyszerűen egy mezőből jön, és nincs feltétel vagy számítás.
Haladó
Teljes erő: minden tétel mennyisége és egységára egy-egy JavaScript-kifejezéssel (képlettel) számolódik. Feltételes sorok, típus szerinti árazás, matematikai függvények — mind lehetséges. A parkettázós példához ezt választjuk.
Gyakorlati tanács
Ha bizonytalan vagy, kezdd a Haladó szerkesztővel. Egy egyszerű sablont is meg tudsz benne csinálni (a képlet lehet simán egy mezőnév vagy egy szám), de ha később bővítenél, nem kell újrakezdened.
7.4A haladó szerkesztő térképe
A „+ Új sablon (haladó)" gomb egy űrlapot nyit. Mielőtt kitöltjük, ismerkedjünk meg a felépítésével — öt logikai blokkból áll, fentről lefelé:
Alapadatok — a sablon neve és leírása.
Ajánlat beállítások — a keletkező ajánlat címe, ÁFA-módja, kedvezmény, megjegyzés.
Elérhető változók és függvények — egy „puska": mit használhatsz a képletekben.
Ajánlat tételek — a szíve: a sorok, amelyekből az ajánlat áll.
A következő szakaszok ezt az öt blokkot járják végig — mindegyik beállítást elmagyarázva, azokat is, amelyeket a parkettázós példában nem használunk.
7.5Alapadatok: név és leírás
Új kalkulációs sablon×
Parkettázás – ajánlat
Automatikus parkettázási ajánlat a kapcsolat 4 egyedi mezőjéből.
7.2. ábra. Alapadatok. A név kötelező (ezt látod majd a listában és az ajánlat-generálásnál); a leírás opcionális emlékeztető.
Sablon neve — kötelező. Ez jelenik meg a sablonlistában és az ajánlat generálásakor a legördülőben. Adj beszédes nevet (pl. „Parkettázás – ajánlat"), különösen ha több sablonod lesz.
Leírás — opcionális. Csak neked/kollégáidnak szól, az ügyfél nem látja. Hasznos, ha később nem emlékszel, mire való a sablon.
7.6Ajánlat beállítások — a keletkező ajánlat kerete
Ez a blokk azt szabályozza, hogy a sablonból generált ajánlat milyen keretet kapjon. Négy beállítás van, és mind a négyet érdemes érteni.
Ajánlat beállítások
Parkettázási ajánlat – {{contact_name}}
27% ÁFA
0
pl. Az ajánlat a fenti tételekre vonatkozik, az árak nettó értékek.
7.3. ábra. Ajánlat beállítások. A {{...}} jelölés helyére a rendszer az adott ügyfél adatát írja be.
Ajánlat cím sablon
A generált ajánlat címe. Használhatsz benne behelyettesíthető változókat kettős kapcsos zárójelben. A {{contact_name}} helyére minden ügyfélnél a saját neve kerül — így „Parkettázási ajánlat – Kovács Bence", „Parkettázási ajánlat – Nagy Réka" stb. lesz automatikusan.
ÁFA
Két lehetőség: 27% ÁFA (normál, ez az alapértelmezett) vagy ÁFA-mentes. Az utóbbit alanyi adómentes vállalkozás vagy adómentes ügylet esetén válaszd — ilyenkor az ajánlaton nem jelenik meg ÁFA-sor, a nettó és a bruttó megegyezik. A PadlóProfi példában 27%-ot használunk.
Kedvezmény (%)
Egy fix, sablon-szintű kedvezmény, amit a rendszer minden tételre alkalmaz. Ha itt pl. 10-et adsz meg, minden generált ajánlat automatikusan 10% kedvezményt kap. Nálunk 0 marad — a példában nem adunk kedvezményt —, de jó tudni, hogy létezik: pl. egy „Nyári akció" sablont csinálhatsz belőle egyetlen szám átírásával.
Megjegyzés sablon
Szabad szöveg, ami az ajánlat aljára kerül (pl. fizetési feltételek, érvényesség, „az árak nettó értékek"). Ebben is használhatsz {{...}} változókat. Opcionális — a példában rövid megjegyzést adhatsz, vagy üresen hagyhatod.
Kevésbé nyilvánvaló, de hasznos
A Kedvezmény és az ÁFA mezővel egyetlen sablonból több „változatot" gyárthatsz: ugyanaz a számítási logika, más ÁFA-mód vagy más kedvezmény — anélkül, hogy a tételeket újra kellene építeni.
7.7Elérhető változók és függvények — a „puska"
Ez egy legördíthető referencia-panel. Nem beállítás, hanem segédlet: felsorolja, mire hivatkozhatsz a képletekben, és milyen függvények állnak rendelkezésre. Amikor képletet írsz, ide pillantasz vissza.
7.4. ábra. A referencia-panel. A Kontakt mezők és az Egyedi contact mezők a te fiókod szerint jelennek meg — itt épp a PadlóProfi négy parketta-mezőjével.
Nézzük végig, mit kínál:
Kontakt mezők — minden ügyfélnél elérhető alapadatok (név, e-mail, telefon, cím). A képletben a bal oldali „belső névvel" hivatkozol rájuk.
Egyedi contact mezők — a te saját mezőid (7.2). Itt látod a pontos belső nevüket. Ezekből számol a parkettázós sablon.
Matematikai függvények — kerekítés (round, ceil = felfelé, floor = lefelé), abszolút érték, minimum/maximum, gyök, hatvány. A product_ar('név') egy termék élő nettó árát adja vissza a neve alapján.
Sablon változók ({{...}}) — ezt a szöveges mezőkben használod (tétel neve, leírás, cím, megjegyzés), nem a számképletekben.
Feltételes kifejezés — a legfontosabb eszköz: a „ha–akkor–különben" logika. Erre épül a feltételes sorok trükkje (7.10).
Miben írjuk a képleteket?
A képletek JavaScript-szerű kifejezések. Néhány gyakorlati szabály: egyenlőség-vizsgálat == jellel; feltétel a ? : (ternary) operátorral; a szövegértéket idézőjelben add meg (pl. parketta_tipusa == 'Világos tölgy'). Ne aggódj, ha nem programozol — a példák másolhatók és átírhatók.
7.8Változók — opcionális, de elegáns
Ez a blokk lehetővé teszi, hogy saját, újrahasznosítható rész-számításokat nevezz el, mielőtt a tételekhez érnél. Ha ugyanazt a részletet több tételben is használnád, itt egyszer kiszámolod, és a tételekben már csak a nevére hivatkozol.
Változók + Változó
JS kifejezések — az előző változók is elérhetők. Nincs még változó. A tételek formulái közvetlenül is hivatkozhatnak a contact mezőkre.
7.5. ábra. A Változók blokk üresen. A parkettázós példában nem használjuk — de egy alapterulet nevű változóba pl. kiemelhetnéd a parkettazando_terulet_m-et, ha sok helyen hivatkoznál rá.
Mikor éri meg? Ha van egy összetett rész-képlet (pl. egy kedvezményszorzó vagy egy régió-alapú felár), amit három-négy tétel is használna. Akkor egyszer megírod változóként, és a tételek már csak a rövid nevét írják. A parkettázós példa elég egyszerű ahhoz, hogy elhagyjuk — a tételek közvetlenül a contact mezőkre hivatkoznak.
Sorrend számít
A változók fentről lefelé számolódnak, és egy változó hivatkozhat a felette lévőkre. Így „láncba" fűzhető számítást is építhetsz.
7.9Az ajánlat tételei — egy sor anatómiája
Itt a lényeg. Az „+ Tétel" gombbal annyi sort adsz hozzá, ahányra szükség van. Minden sornak öt része van:
Ajánlat tételek + Tétel
Mennyiség és ár JS formulával számolva
1. tétel
— Szabad tétel (nincs termék) —
Parketta – {{parketta_tipusa}}
parkettazando_terulet_m
parketta_tipusa == 'Világos tölgy' ? 8900 : …
pl. {{parkettazando_terulet_m}} m² lerakva
7.6. ábra. Egy tétel öt mezője. A csillagos mezők kötelezők; a Termék és a Leírás opcionális.
Mező
Mit csinál?
Termék(opcionális)
Rákereshetsz egy termékre a katalógusból — ekkor a neve és ára onnan jön. Vagy választhatod a „Szabad tétel (nincs termék)" opciót, és mindent képlettel adsz meg. Ha terméket választasz, az árát a képlet felülírhatja.
Tétel neve (sablon)*
A sor megnevezése az ajánlaton. Használhatsz benne {{...}} változót — pl. Parketta – {{parketta_tipusa}} az ügyfélnél „Parketta – Világos tölgy" lesz.
Mennyiség formula*
Egy képlet, ami a darabszámot/mennyiséget adja. Lehet egyszerűen egy mezőnév (parkettazando_terulet_m), számítás (parkettazando_terulet_m / 10), vagy feltétel.
Egységár formula*
Egy képlet a nettó egységárra. Lehet fix szám (1800), termék-ár (product_ar('Szegélyléc')), vagy típustól függő ár.
Leírás sablon(opcionális)
A tétel alá kerülő magyarázó szöveg, szintén {{...}} változókkal.
A legfontosabb szabály
Ha egy tétel mennyisége 0-ra jön ki, a rendszer kihagyja azt a sort az ajánlatból. Ez nem hiba, hanem eszköz: pontosan erre épülnek a feltételes sorok (7.10).
7.10A parkettázós ajánlat öt tétele
Most építsük fel a teljes logikát. A PadlóProfi ajánlata öt tételből áll. Nézzük végig mindet — a képlet mellett azzal, hogy miért úgy néz ki.
1. tétel — Parketta (a típus szerint)
A parketta mennyisége a terület, az ára pedig a választott típustól függ. A típustól függő árat egy feltétel-lánccal (egymásba ágyazott ternary) oldjuk meg:
Olvasd így: „ha a típus Világos tölgy, az ár 8900; különben ha Sötét tölgy, 9500; …; ha egyik sem, 0". Egyetlen sor kiszolgálja mind a hat parkettatípust — nem kell hat külön tétel.
Élő árral is megoldható
A fix számok helyett írhatnál product_ar('Parketta – Világos tölgy')-et, így az ár mindig a termékkatalógus aktuális értéke lenne. Előny: átárazáskor a sablont nem kell módosítani.
2. tétel — Aljzatkiegyenlítő (feltételes)
Ez csak akkor kell, ha az ügyfél kérte. Itt jön a „0 → kihagyás" trükk: ha az aljzatkiegyenlites_kell értéke nem „true", a mennyiség 0, és a rendszer eltünteti a sort.
Nézzük Kovács Bencét: terület 40, szegély 26, aljzat Igen, típus Világos tölgy. A rendszer így számol:
Tétel
Egységár
Menny.
Nettó
Parketta – Világos tölgy
8 900
40
356 000
Aljzatkiegyenlítő
1 800
40
72 000
Szegélyléc
1 200
26
31 200
Munkadíj – parkettázás
5 500
40
220 000
Munkadíj – aljzatkiegyenlítés
5 500
4
22 000
Nettó összesen
701 200 Ft
A varázslat
Egy másik ügyfélnél, akinél az aljzat Nem, a 2. és az 5. tétel mennyisége 0 lesz — és eltűnik az ajánlatból. Ugyanaz a sablon, más adat, automatikusan más (rövidebb) ajánlat. Semmit nem kell átállítani.
7.11Mentés és a kész sablon
A szerkesztő alján a Mentés gomb rögzíti a sablont. Ezután a listában megjelenik a kártyája, rajta a legfontosabb adatokkal: a cím-minta, az ÁFA-mód és a tételek száma.
Parkettázás – ajánlat haladó
Automatikus parkettázási ajánlat a kapcsolat 4 egyedi mezőjéből.
7.7. ábra. A kész sablon kártyája. A ceruza ikonnal bármikor szerkeszthető, a kuka ikonnal törölhető.
7.12Használat: ajánlat generálása egy ügyfélnek
A sablon önmagában még nem ajánlat — akkor „kel életre", amikor egy ügyfélre alkalmazod. Nyisd meg a kapcsolat adatlapját, és menj az Ajánlatok fülre. Ott egy „Ajánlat generálása sablonból" panelt találsz:
Ajánlat generálása sablonból
Parkettázás – ajánlat
Generálás
7.8. ábra. Az ügyfél Ajánlatok fülén: sablon kiválasztása és egyetlen kattintás.
Válaszd ki a „Parkettázás – ajánlat" sablont, kattints a Generálás-ra — és a rendszer az ügyfél négy mezőjéből azonnal előállítja a kész, tételes ajánlatot. Kovács Bencénél ez a fenti öt sor, nettó 701 200 Ft (bruttó 890 524 Ft), amit egy kattintással PDF-be menthetsz vagy e-mailben elküldhetsz (lásd 8. fejezet).
Tömegesen is megy
Ugyanez a sablon a kapcsolat-listából tömegesen is használható: kijelölsz mondjuk 10 ügyfelet, és egyetlen művelettel mindenki a saját, kiszámolt ajánlatát kapja — névvel, összeggel, tételes PDF-fel.
7.13Haladó lehetőségek — amit most nem használtunk
A parkettázós példa szándékosan egyszerű. Íme, mi minden fér még bele — hogy lásd a rendszer határait:
Kerekítés valós egységekre. Ha egy termék csak csomagban kapható (pl. 2,5 m²/doboz), a mennyiséget felfelé kerekítheted: ceil(parkettazando_terulet_m / 2.5).
Mennyiségi kedvezmény sávok. Feltétellel adhatsz nagyobb rendelésre jobb egységárat: parkettazando_terulet_m > 100 ? 8000 : 8900.
Élő termékárak. A product_ar('név') mindig a katalógus aktuális árát hozza — átárazáskor a sablonhoz hozzá sem kell nyúlni.
Több feltétel egyszerre. Kombinálhatod a feltételeket (pl. „ha aljzat kell ÉS a terület nagy"), így finomabb szabályokat építhetsz.
Változók a rendrakáshoz. Bonyolult sablonnál a közös rész-számításokat érdemes külön Változóba emelni (7.8) — átláthatóbb és könnyebben módosítható.
ÁFA-mentes / kedvezményes változatok. Ugyanabból a logikából az ÁFA és a Kedvezmény átállításával külön sablonokat gyárthatsz (pl. céges vs. lakossági, akciós időszak).
7.14Összefoglaló — ellenőrzőlista
Mielőtt élesíted a sablont, fusd át:
☐
Léteznek a szükséges egyedi mezők (terület, szegély, aljzat, típus), és tudom a belső nevüket (a referencia-panelről).
☐
Léteznek a termékek a katalógusban (parketták, aljzat, szegély, munkadíj), nettó árral.
☐
A sablon neve beszédes; a cím-minta tartalmazza a {{contact_name}}-et.
☐
Az ÁFA és a Kedvezmény a kívánt értéken áll.
☐
Minden tételnek van neve, mennyiség- és egységár-formulája.
☐
A feltételes tételek (aljzat) 0-ra jönnek ki, ha nem kellenek — és így eltűnnek.
☐
Kipróbáltam egy valódi ügyfélen: a végösszeg stimmel.
Összefoglalva
A kalkulációs sablon a CRM egyik legnagyobb időmegtakarítója. Az első felállítás fél óra — de utána minden ajánlat másodpercek kérdése, és soha többé nem csúszik számolási hiba. Egyszer építed, ezerszer használod. A következő fejezetben ezt kamatoztatjuk: a sablonból egyetlen kattintással kész, tételes ajánlatot generálunk Kovács Bencének.