Malleja dynaamisista kaavoista

Malleja dynaamisista laskukaavoista

Tälle sivulle on koottu esimerkkejä joistakin yleisesti tarvittavista dynaamisista kaavoista. Kaavat eivät välttämättä sellaisenaan sovi jokaiseen tarpeeseen, mutta ne toimivat malleina sille, miten vastaanvantyylisiä kaavoja voidaan kirjoittaa.

Ohjeen kaavoissa on käytetty värikoodausta havainnollistamaan sitä, mitkä osat kaavassa todennäköisesti muuttuvat eri tarpeiden mukaan. Sinisellä merkityt kohdat ovat moduulin kenttien tunnuksia (id), jotka tulee vaihtaa vastaamaan juuri käytettävien kenttien tunnuksia. Oranssilla merkityt kohdat kuvaavat tietyn kentän arvoa. Punaisella merkityt kohdat ovat muuttuvia tekijöitä, jotka vaikuttavat kentän lopputulokseen. Näitä kohtia ovat esimerkiksi numeroarvo, johon kentän sisältöä verrataan, tai kenttään kirjoitettava teksti.

 

Tarjouksen aiheen täyttäminen

Tarjous {$account_id|getEntityFieldValue:'accountname'}

Kaava syöttää kenttään (esimerkissä tarjouksen aihe-kenttä) tekstin ”Tarjous” sekä asiakkaan nimen.

 

Potentiaalin päivittäminen 100%, jos potentiaalin tila muuttuu toteutuneeksi kaupaksi

{if $sales_stage=='Closed Won'}100{else}{$probability}{/if}

Yllä oleva kaava muuttaa potentiaalin kentässä probability arvoon 100, jos sales_stage-kentän tila on ”Closed Won”. Muussa tapauksessa muutoksia ei tehdä.

 

Informatiivinen kaava: Kentän tyhjästä arvosta ilmoittaminen

{if $account_id|getEntityFieldValue:'ovt' == ''}Asiakkaalta uupuu OVT{/if}

Kaava tarkistaa, onko kentän ”ovt” arvo tyhjä ja jos se on, antaa se ilmoituksen ”Asiakkaalta uupuu OVT”.

 

Informatiivinen kaava: Kentän täytetystä arvosta ilmoittaminen

{if $passivation_date!= ''}Kontakti on passivoitu{/if}

Kaava varmistaa, onko kentän ”passivation_date” arvo tyhjä. Jos se ei ole tyhjä, annetaan ilmoitus ”Kontakti on passivoitu”.

 

Validointikaava: Virheellisestä maakoodista ilmoittaminen

{if $bill_country|count_characters > 2}Laskutusmaa on väärässä muodossa: Suomi = FI, Ruotsi = SE, Norja=NO ja Tanska=DK{/if}

Kaava tarkistaa annetun maakoodin pituuden ja jos se on pidempi kuin kaksi merkkiä, antaa se ilmoituksen ”Laskutusmaa on väärässä muodossa…”. Entiteetin tiedot eivät tallennu, jos ilmoitus annetaan.

 

Entiteettiin liitetyn tuotteen hinnan hakeminen

{$product_id|getEntityFieldValue:'unit_purchase_price'}

Kaava hakee kenttään tuotteen product_id hinnan kentästä unit_purchase_price.

Huom. Vastaavan toiminnon saa tehtyä myös rivitasolle käyttämällä seuraavanlaista kaavan muotoa:

{$row.hdnProductId|getEntityFieldValue:'unit_purchase_price'}

 

Kontaktin hakeminen projektilta, jos kontaktikenttä on tyhjä

{if !$contact_id}{$project_id|getEntityFieldValue:'contact_id'}{else}{$contact_id}{/if}

Jos kontaktikenttä esim. laskulla on tyhjä, kaava hakee laskuun linkitettyyn projektiin merkityn kontaktin kenttään. Jos kenttä ei ole tyhjä, ei sille tehdä muutoksia.

 

Vastuukäyttäjän sähköpostin hakeminen tekstikenttään

{$assigned_user_id|getUserFieldValue:'email1'}

Kaava hakee entiteetin Vastuu-kenttään merkityn käyttäjän sähköpostiosoitteen kenttään.

 

Kutsutilaisuuden julkisen ilmoittautumislinkin muodostaminen, jos julkinen näkyvyys on aktivoitu

{if $anonymous_visibility==1}https://ITSEPALVELUPORTAALIN URL/public/events/{$id}{else} {/if}

Jos kutsutilaisuuden Julkinen näkyvyys -kenttä on aktivoitu, kaava kirjoittaa kenttään linkin julkiselle ilmoittautumissivulle. Muussa tapauksessa kenttä tyhjätään.

 

Voimassaolopäivän asettaminen kahden viikon päähän, jos voimassaolo-kenttä on tyhjä

{if $validtill ==''}{'+ 14 days'|getDisplayDate:false}{else}{$validtill}{/if}

Yllä oleva kaava varmistaa, että kenttä validtill on tyhjä. Jos on, lisää se siihen päivämäärän, joka on nykyisestä päivämäärästä 14 päivää eteenpäin. Jos kenttä ei ole tyhjä, ei sille tehdä muutoksia.

 

Päivämäärän laskeminen useammasta kentästä

{"$invoicedate + $payment_term days"|getDisplayDate:false}

Kaava siirtää kentän invoicedate päivämäärää kentän payment_term osoittaman määrän verran eteenpäin ja asettaa tämän uuden päivämäärän kohdekenttään.

Päivämäärän vertaaminen

{assign var=”a” value=”now”|strtotime}
{assign var=”b” value=$invoicedate|strtotime}
{if $a < $b}ILaskun päiväys on suurempi kuin kuluvapäivä{/if}

Kaava vertaa kahta arvoa keskenään, jotka on asettuja var muuttujaa hyödyntäen.

Päivämäärän hakeminen päivämääräkentästä tekstikenttään

{"$createdtime"|date_format:'%d.%m.%Y'}

Kaava hakee entiteetin luomispäivämäärän kentästä createdtime ja lisää tämän kohdetekstikenttään muodossa pp.kk.vvvv.

 

Passivointipäivämäärän täydentäminen, jos entiteetti on merkitty passiiviseksi

{if $passivation_date=='' && $passive=='1'}{'+ 0 days'|getDisplayDate:false}{else}{$passivation_date}{/if}

Kaava asettaa kenttään tämän päivän päivämäärän, jos passivation_date on tyhjä ja entiteetti on merkitty passiiviseksi. Muussa tapauksessa kentässä säilytetään siinä oleva arvo.

 

Takuun voimassaolon automaattinen tarkistaminen

{assign var=today value='Y-m-d'|date}{assign var=date value=$cf_1234|getDBInsertDateValue}{if $today <= $date}1{/if}

Kaava vertaa erillisen ”Voimassaolopäivämäärä”-kentän cf_1234 arvoa tämän päivän arvoon. Jos tämä päivä on pienempi tai yhtäsuuri kuin kentän päivämäärä, asetetaan ”Takuu voimassa”-kenttä aktiiviseksi.

 

Puhelinnumeron muodon päivittäminen ja korjaus

{assign var=pno value='/[^0-9]/'|preg_replace:'':$mobile}{if $pno|strpos:'0' === 0}358{$pno|substr:1}{else}{$pno}{/if}

Kaavan ensimmäinen osa varmistaa, että kentän arvossa on käytetty vain numeroita 0-9, ja jos jotakin muuta merkkiä on käytetty, se korvaa väärän merkin tyhjällä merkillä. Kaavan toinen osa tunnistaa numerolla 0 alkavat numerot ja korvaa nollan Suomen suuntanumerolla 358. Jos numero on jo vaaditunlainen, ei sille tehdä muutoksia.

 

Tilinumeron muodon päivittäminen ja korjaus

FI{assign var=pno value='/[^0-9]/'|preg_replace:'':$cf_pankkitili1}{$pno}

Kaavan ensimmäiset kaksi kirjainta lisätään aina kentän tiedon alkuun. Sulkeiden sisällä oleva osio varmistaa, että kentän arvossa on käytetty vain numeroita 0-9, ja että kaavassa ei ole välilyöntejä tai muita merkkejä. Jos numero on jo vaaditunlainen, ei sille tehdä muutoksia. Alempana ohjetta on esimerkki valindointikaavasta, joka tarkistaa, että tilinumero on kokonaisuudessaan vain 18 merkkiä pitkä, eikä anna muissa tapauksissa tallentaa entiteettiä (Validointikaava: Tilinumero on tietyn pituinen).

 

Kirjaimista ja numeroista poikkeavien merkkien poistaminen

{assign var=pno value='/[^a-z0-9]/'|preg_replace:'':$cf_1234}{$pno}

Kaava varmistaa, että kentässä on käytetty vain kirjaimia tai numeroita, ja korvaa mahdolliset muut merkit tyhjällä merkillä.

 

Välilyöntien poistaminen sähköpostikentästä

{$email|regex_replace:"/\s+/":""}

Kaava poistaa kentästä kaikki välilyönnit.

 

Tapahtuman tyypin ja tapahtumaan liitettyjen kontaktien nimien tallentaminen Aihe-kenttään

{if $subject ==''}{$activitytype} {foreach item=contact from=$Contacts name=cnt}{if !$smarty.foreach.cnt.first}, {/if}{$contact|getContactName}{/foreach}{else}{$subject}{/if}

Jos tapahtuman subject-kenttä on tyhjä, asetetaan aihekenttään tapahtuman tyyppi, välilyönti ja tämän jälkeen jokaisen tapahtumaan liitetyn kontaktin nimi. Kontaktien nimien välille merkitään pilkut (,) ja välilyönnit. Jos yhtään kontaktia ei ole liitetty, ei tapahtuman tyypin perään kirjoiteta mitään.

 

Tapahtumaan ensimmäisenä liitetyn asiakkaan nimen lisääminen Aihe-kenttään

$subject {$Accounts.0|getEntityFieldValue:'accountname'}

Kaava säilyttää tapahtuman Aihe-kentän tekstin ja lisää sen perään välilyönnin ja tapahtumaan ensimmäisenä liitetyn asiakkaan nimen. Numeroarvo 0 viittaa ensimmäikseksi lisättyyn asiakkaaseen; suurentamalla lukua kenttään voidaan lisätä esimerkiksi toisena, kolmantena, jne. liitetty asiakas.

 

Kahden tekstikentän luvun kertominen keskenään kolmanteen kenttään + desimaalien määrittäminen

{math equation="(x/z)*y" x=$cf_1100 y=$cf_1200 z=100 format="%.2f"}

Kaava laskee kohdekenttään kahden kentän arvojen tulon (toisen kentän arvo jaetaan ensin muuttujalla, jonka arvo on 100). Kaavassa määritetään viimeisenä myös, että tulossa esitetään kaksi desimaalilukua.

 

Kahden päivämäärän välissä olevan ajan laskeminen (päivinä)

{assign var="start" value=$createdtime|strtotime}{assign var="end" value=$modifiedtime|strtotime}{floor(($end - $start) / (3600 * 24))}

Apumuuttujille start ja end annetaan arvot entiteetin luonti- ja muokkausajoista. Näiden kahden välinen aika päivinä lasketaan kaavan viimeisessä osassa.

 

Validointikaava: Olemassa olevasta yrityksen nimestä ilmoittaminen

{if $id == ''}{assign var="id" value="0"}{/if}{assign var="c" value="crmid != '$id' AND crm_account.accountname"}{assign var="cnt" value='Accounts'|entity_count_by_field_value:$c:$accountname}{if $id && $cnt > 0}Muokataan ja tehdään duplikaattia{elseif !$id && $cnt > 0}Luodaan uutta ja tehdään duplikaattia{/if}

Validointikaava tarkistaa ja estää yrityksen tallentamisen samalla nimellä, kuin jo jokin olemassa oleva yritys. Apumuuttujaan cnt lasketaan, kuinka monta samaa yritysnimeä on järjestelmässä. Jos nimiä on useampi kuin yksi, annetaan yritystä tallentaessa ilmoitus ja estetään tallennus. Kaavassa on ensin tarkistus sille, että olemassa olevaa entiteettiä (id olemassa) muokataan ja yritetään tallentaa samalla nimellä, kuin jokin toinen yritys ja sen jälkeen tarkistus, kun kyseessä on aivan uuden entiteetin luominen (id:tä ei vielä olemassa).

 

Validointikaava: Syötetty arvo on tietyltä väliltä

{if $description <3}Arvon pitää olla vähintään 3{elseif $description >28}Arvo saa olla korkeintaan 28{/if}

Validointikaava tarkistaa esimerkkitapauksessa kuvaus-kenttään syötetyn arvon ja estää sen tallentamisen, jos se on arvoltaan pienempi kuin 3 tai suurempi kuin 28. Sulkeiden välissä oleva teksti näytetään käyttäjälle ilmoitusosiossa, mikäli arvo ei ole sallittu.

 

Validointikaava: Tilinumero on tietyn pituinen

{if $cf_pankkitili1|count_characters > 18}Tilinumero on liian pitkä{elseif $cf_pankkitili1|count_characters < 18}Tilinumero on liian lyhyt{/if}

Validointikaava tarkistaa esimerkkitapauksessa itseluotuun (cf-kenttä) tilinumero kenttään syötetyn arvon ja estää sen tallentamisen, jos se on arvoltaan pienempi kuin 18 tai suurempi kuin 18. Sulkeiden välissä oleva teksti näytetään käyttäjälle ilmoitusosiossa, mikäli arvo ei ole sallittu.

 

Rivikaava: Näytetään tuoterivin järjestysnumero

{$row.sequence_no}

Kaavaa käytetään tallentaessa. Riville on luotava uusi kenttä (numero tai teksti), johon tieto tallentuu.

Kaava toimii tallentaessa myös kun rivien järjestystä muokataan tai tuoterivi poistetaan välistä.
Huom: Jos tuoterivi kopioidaan, ei kaava toimi ensimmäisen tallennuksen yhteydessä (kopioinnin jälkeen) vaan tietue on otettava jälleen muokkaustilaan ja tallennettava uudelleen. Silloin kaava toimii myös kopioidulle riville.

 

Validointikaava: Vain numeroiden syöttäminen kenttään on sallittua

{if !is_numeric($cf_kenttä)}Vain numerot ovat sallittuja{/if}

Validointikaava tarkistaa esimerkkitapauksessa itseluotuun (cf-kenttä) tekstikenttään syötetyn arvon ja estää sen tallentamisen, jos se sisältää muita merkkejä kuin numeroita. Sulkeiden välissä oleva teksti näytetään käyttäjälle ilmoitusosiossa, mikäli syötetty arvo ei ole sallittu.

CRM2-ulkoasun määrittäminen
Prosessikaavio
Dokumenttipohjat – Tägien käyttö ODF-/OOXML-pohjissa
Combined Shape