====== Úloha OxUpozTerm ====== Úloha **OxUpozTerm** je určena ke hlídání termínů a je použitelná pro libovolnou entitu. Princip úlohy spočívá v tom, že pro zadanou **entitu** (datovou tabulku) a v ní zvolený **datumový atribut** **vyfiltruje záznamy**, pro něž datumový atribut spadá do zadaného intervalu. Výstupem je seznam nalezených záznamů (tzv. **výsledek**) a možnost automatického **zaslání výsledku** na zadanou e-mailovou adresu, případně též **odeslání dílčích mailů** jako upozornění pro osoby vázané na záznam (např. zodpovědná osoba, vlastník apod.) Níže je **příklad naplánované úlohy** pro **kontrolu termínů v Aktivitách CRM**. Úloha vypíše do výsledku všechny aktivity, jejichž plánované datum do je v rozmezí od data spuštění do 60 dnů dopředu. Navíc se zohlední podmínka, že se nejedná o aktivity ukončené nebo zrušené. Výsledek se odešle mailem na adresu josef.novak@firma.cz a dílčí maily jednotlivým zodpovědným osobám. {{:orsoftopen:o0:task:o0task:o0taskoxupozterm.png?direct&|}} - **Parametry pro úlohu OxUpozTerm** jsou tyto: * **Entita** - název entity (tabulky), která se má kontrolovat, v syntaxi HQL (např. //Ohakt// pro aktivity CRM, //PpfHl// pro hlavičky přijatých faktur ap.). Lze jej zjistit z detailu na vybrané položce (pravé tlačítko myši///Popis/////**Entitní třída**//). Je nutné dodržet velká a malá písmena. * **Kontrolovat položku** - název datumového atributu (v entitě), který se má kontrolovat (např. //datcasPlanDo// - plánované "datum od" aktivity (//Ohakt//)). Lze jej zjistit z detailu na vybrané položce (pravé tlačítko myši///Popis/////**Binding**//). Je nutné dodržet velká a malá písmena. Datum může být ve formátu //Date// nebo //Integer//. Ve speciálním případě může být kontrolovaný datumový **atribut z uživatelských atributů** (O0zazntab), potom se zapíše s prefixem "dotahovanaData.o0zazntab", např. "dotahovanaData.o0zazntab.datum01". * **Kontrolovat Od: Měsíců a dnů** - počet měsíců a/nebo dnů "od" vzhledem k datu spuštění (pro kontrolu datumu v záznamu), tj. **doba kontroly zpět**. Je-li 0 (nula), kontroluje se od data spuštění. Je-li nevyplněno, kontroluje se vše minulé. * **Kontrolovat Do: Měsíců a dnů** - počet měsíců a/nebo dnů "do" vzhledem k datu spuštění (pro kontrolu datumu v záznamu), tj. **doba kontroly dopředu**. Je-li 0 (nula), kontroluje se do data spuštění. Je-li nevyplněno, kontroluje se vše budoucí. * **Dle plánu od** - datum a čas od vypočtený z plánu a hodnoty Kontrolovat Od. Záznamy se filtrují od tohoto data. * **Dle plánu do** - datum a čas do vypočtený z plánu a hodnoty Kontrolovat Do. Záznamy se filtrují do tohoto data. * **Atr. kontr. dní předem** - název atributu (v entitě), ve kterém je uložen počet dní kontroly dopředu (např. //kontrDnyPred// v tabulce //Ohakt//). Jedná se o speciální případ, kdy se požaduje, aby počet dní kontroly dopředu nebyl pro všechny záznamy shodný (daný položkami //Kontrolovat od//, //Kontrolovat do//), ale aby byl určen pro každý záznam zvlášť (**individuální termín kontroly**). Pokud je tento atribut vyplněn, použije se namísto //Kontrolovat do//, přičemž obsah //Kontrolovat od// se ignoruje, tj. bere se jako nevyplněné. Není-li v konkrétním záznamu entity atribut vyplněn, tak se záznam nevyfiltruje (nebude ve výsledku). * **Podmínka výběru** - **další podmínka výběru** (kromě datumu výše) v syntaxi HQL (např. "o0ciselnikByIdpkOhaktstav.kodaCiseln <> 'UKO' and o0ciselnikByIdpkOhaktstav.kodaCiseln <> 'ZRU'" pro výběr pouze neukončených a nezrušených aktivit). Pro snadnější editaci lze zobrazit v samostatném okně pomocí tlačítka **//Více//**. * **Třídění výsledku** - volba setřídění jednotlivých řádků (záznamů) výsledku - existují tyto možnosti: * **Podle kontrolovaného data - vzestupně** - třídí se vzestupně dle atributu uvedeného v poli //Kontrolovat položku// * **Podle kontrolovaného data - sestupně** - třídí se sestupně dle atributu uvedeného v poli //Kontrolovat položku// * **Podle zadaného atributu - vzestupně** - třídí se vzestupně dle atributu uvedeného v poli //Třídit dle// * **Podle zadaného atributu - sestupně** - třídí se sestupně dle atributu uvedeného v poli //Třídit dle// * **Třídit dle** - název atributu podle kterého se bude třídit, je-li nastaveno //třídění Podle zadaného atributu// * **Do výsledku** - v tomto poli se **definuje obsah výsledku** a obsahuje jednotlivé prvky, které se mají do výsledku dostat. Prvky se oddělují čárkou "," nebo znakem plus "+". Výsledek je seznam všech nalezených záznamů, které vyhovují zadání kontroly. Výsledek obsahuje pro každý nalezený záznam jeden řádek textu, v němž jsou vypsány **hodnoty zadaných atributů záznamu**. Pokud je v zadání použit oddělovač čárka ",", jsou i hodnoty automaticky **oddělené čárkou**. Pokud je v zadání použit oddělovač plus "+", přidává si uživatel **vlastní oddělovače** tak, že přidává pevné texty (např. ', '). Oddělovač plus tedy umožňuje větší variabilitu (např. různé oddělovače, vynechání oddělovače). Lze použít i některé funkce pro úpravu hodnot atributů (např. převod osobního čísla osoby na příjmení + jméno ap.). Pro snadnější editaci lze zobrazit v samostatném okně pomocí tlačítka **//Více//**. Prvkem výsledku může být: * **Atribut kontrolované entity** - např. //predmet// z tabulky //Ohakt// (předmět aktivity) * **Atribut z navázané entity** - např. //o6a.dkaKurz// z tabulky //O6a// navázané na //Ohakt// (zkrácený název firmy), nebo //o0ciselnikByIdpkOhaktdruh.kodaCiseln// (kód druhu aktivity) * **Atribut z uživatelských atributů O0zazntab** - např. //dotahovanaData.o0zazntab.datum01// nebo //dotahovanaData.o0zazntab.hodnota01// * **Hodnota atributu upravená funkcí** - lze upravovat zejména datumy, texty a dotahovat osoby dle osobního čísla nebo ID záznamu * **Úprava datumu** * //Převod z formátu **Integer na display**// - **O0DateUtil.intDateToDisplay(intDate)** převede např. 20211215 na 15.12.2021 * **Úprava textu** * //**První písmeno na malé**// - **O0StringUtil.prvniMale(text)** nebo **prvniMale(text)** převede např. "Uzavření smlouvy" na "uzavření smlouvy" * //**První písmeno na velké**// - **O0StringUtil.prvniVelke(text)** nebo **prvniVelke(text)** převede např. "objednávka" na "Objednávka" * //**Na malá písmena**// - **naMala(text)** převede celý text na malá písmena * //**Na velká písmena**// - **naVelka(text)** převede celý text na velká písmena * **Dotažení osoby** - z tabulky Osoby * //**Příjmení a jméno z osobního čísla**// - **OsobyDaoImpl.osobyPrijmJmenoByOscis(osobyByIdpkOsoby.oscis)** převede např. 236 na "Novák Josef". * //**Příjmení a jméno z idpk osoby**// - **OsobyDaoImpl.osobyPrijmJmenoByIdpk(osobyByIdpkOsoby.idpk)** převede např. 1559 na "Novák Josef" * //**Celé jméno vč. titulů z osobního čísla**// - **OsobyDaoImpl.osobyJmenoCeleByOscis(osobyByIdpkOsoby.oscis)** převede např. 236 na "Novák Josef Ing." * //**Celé jméno vč. titulů z idpk osoby**// - **OsobyDaoImpl.osobyJmenoCeleByIdpk(osobyByIdpkOsoby.idpk)** převede např. 1559 na "Novák Josef Ing." * **Pozn.:** Funkce výše lze volat i **zjednodušeně bez prefixu "OsobyDaoImpl."**, tj. např. **osobyPrijmJmenoByOscis(osobyByIdpkOsoby.oscis)**. * **Pevný text** - text se použije tak, jak je zadán. Pevný text je uzavřen v apostrofech nebo uvozovkách, tj. např. 'Datum platnosti: ' nebo "Kód: ". * **Odřádkování** - pro odřádkování ve výsledku lze použít funkci **LINESEP()**. Výsledek pro jeden záznam tak nemusí být na jediném řádku, ale může být rozdělen do více řádků. * **Vzor dílčího e-mailu** - název šablony mailu, v němž se odešle upozornění na jednotlivé nalezené záznamy. Šablona se vybírá ze seznamu šablon. Uživatel si může definovat a upravovat vlastní šablony ve volbě //Administrace/Parametry/Plánovač úloh/Šablony mailů//. E-mail se odesílá na adresu specifikovanou v poli //Dílčí e-mail//. * Defaultní **systémová šablona pro dílčí upozorňující mail je o0task_oxUpozTerm_dilci**. Obsahuje obecnou hlavičku a **jeden řádek výsledku** pro daný záznam. Pokud požaduje uživatel jiný nebo podrobnější obsah mailu, může si odvodit od této systémové šablony vlastní šablonu uživatelskou. * Pozn.: Defaultní **systémová šablona pro souhrnný upozorňující mail je o0task_oxUpozTerm**. Obsahuje obecnou hlavičku a **všechny řádky výsledku**. Název souhrnné šablony se uvede do pole //Výsledek/Vzor e-mailu//. Také z této šablony si může uživatel odvodit svoji vlastní. * **Pozn.:** Pokud tedy pro danou úlohu postačují uživateli systémová souhrnná a systémová dílčí šablona, může je použít pro různé úlohy, a vlastní šablony vytvářet nemusí. * **Dílčí e-mail** - specifikace mailové adresy pro dílčí e-mail. Dílčí mail se může typicky posílat osobě zodpovědné (nebo jinak vázané na záznam), potom se zde uvede odkaz na osobní číslo nebo idpk osoby, případně více osob oddělených čárkou. Program dohledá e-mail v tabulce osoby. Např. v Aktivitách CRM pro odeslání mailu zodpovědné osobě a vyřizující osobě by se zde vyplnilo //osobyByIdpkOsoby.oscis, osobyByIdpkOsobyVyriz.oscis//. Lze sem ale uvést i konkrétní e-mailovou adresu (např. //jan.prochazka@mail.cz//). Pro Aktivity CRM (entita //Ohakt//) existuje možnost odesílat dílčí maily účastníkům aktivity tak, že se použije odkaz //OHAKT_UCASTNICI_OSOBY// pro účastníky z naší strany nebo //OHAKT_UCASTNICI_OHKON// pro účastníky ze strany partnera. .