Dělat v Salesforce součty hodnot z podřízených záznamů není žádný problém – slouží k tomu speciální pole typu roll-up summary.
Tahle pole ovšem mají pár nevýhod:
- může jich být na každém objektu maximálně
1025 (od vydání Winter ’16), pokud potřebujete víc můžete zkusit kontaktovat support a požádat o zvýšení; - vazba mezi objekty musí být typu Master-Detail (nestačí Lookup);
- pole, jejichž hodnoty sčítáte, nesmí pracovat s časem (NOW, TODAY, atd.);
- není možné určit počet záznamů, které se mají sčítat, je možné je pouze filtrovat dle podmínek (zapomeňte tedy na průměrnou výši 10 posledních objednávek);
- zrádné (a příjemné zároveň) může být, že nad roll-up polem můžete udělat validační podmínku, která vám vlastně ovlivňuje vytváření podřízených záznamů.
Pokud pro vás některá z výše uvedených podmínek představuje problém, můžete nasadit aplikaci Rollup Helper, která jich většinu řeší. Pro tři pole je zdarma, pokud vám to nestačí nebo potřebujete součty v reálném čase tak začnete platit – řádově 200$ měsíčně.
Co to umí?
Já jsem jenom lehce polochtal vše, co tahle věc umí. Použil jsem ji přesně na tři povolené účely:
- na kampaních jsem udělal hierarchický součet výnosů – protože je nesledujeme pomocí opportunit, tak nám bohužel standardní SF pole nestačí;
- na kontaktu sleduji výši poslední transakce;
- dotáhl jsem na kontakty výsledek posledního telefonátu.
Všechny tyhle věci by šly naprogramovat pomocí APEX, ale přiznávám, že se mi do toho nechtělo.
Sledovat hierarchii kampaní a sčítat hodnoty nahoru by bylo krásné cvičení v rekurzi.
Výše poslední transakce díky governor limitům znamená procházet to celé v cyklu a aktualizovat a aktualizovat (pořád mám pocit, že v SQL je to otázka jednoho řádku a SF to tak nějak ze zásady chce zkomplikovat).
Dotáhnout výsledky posledního telefonátu na kontakt není nic komplikovaného, ale kdo se s tím má psát, když to jde během pár vteřin naklikat?
A definice filtru, to by měl zvládnout i průměrně šikovný člověk.
Až budete příště také líní, tak Rollup Helper vyzkoušejte. Třeba vám také ušetří chvíli času. Případně se podívejte na příklady použití, které vymysleli, některé ty nápady mi přijdou hodně dobré.
A znáte Declarative Rollup Summaries for Lookups (https://github.com/afawcett/declarative-lookup-rollup-summaries)? Také moc pěkné a šikovné řešení.
Narazil jsem na něj nedávno, ale zatím jsem bohužel neměl čas to vyzkoušet. Bylo by to lepší, tady u toho jsem dost limitován těmi maximálně 3 rollupy (ta cena mi pak totiž přijde dost vysoká, aby se to příslušné organizaci vyplatilo).
Declarative Rollup Summaries for Lookups jsme implementovali u jednoho klienta a maximální spokojenost. Šlo o sledování výkonnosti obchodníků na základě data prvního kontaktu (New Event, Call). Výstup byl reprezentován příslušnými Reporty. Krom „instalace“ vše probíhalo perfektně.
A navíc je to uživatelsky přívětivé (pomineme-li prvotní „instalaci“ do Salesforce instance).
Doporučuji!
Taky momentálně využívám Declarative Rollup Summaries for Lookups pro 9 hospiců v rámci CRM pro neziskovky. Hlavně to zadara umí i to real time počítání! A je to docela transparentní, prostě to vytvoří triggery. Nedávno jsem o tom psal na náš Chatter.
Na instalaci není vůbec nic složitého, jen není odkaz na stránce projektu úplně zjevný. Stačí ale na stránce vyhledat „Product URL“ a pak už to probíhá stejně jako z AppExchange (kde tento projekt kupodivu není). Použití je podle přiloženého videa opravdu jednoduché.