Obsah

Možnosti tiskových výstupů z ESO9

Tento článek popisuje různé možnosti tiskových výstupů z ESO9. Na příkladu sestavy faktury vydané (Start i Profi verze) projdeme nejpoužívanější kombinace parametrů pro tisk na monitor, na tiskárnu, do souboru, odeslání e-mailem a uložení do DMS.
Všechny řídící parametry pro tisk sestavy lze předat dvěma základními způsoby: z vazby nebo na odkazu.

V případě ukázek nad Profi sestavou bude upraven datový zdroj sestavy přidáním řídících parametrů pro práci se souborem (a e-mailem) a jednotlivé parametry se budou plnit z vazby. V případě Start sestavy budou všechny řídící parametry předávány na odkazu (struktura sestavy musí zůstat beze změn tak, aby se po instalaci další verze ESO9 dala synchronizovat z ESO9Start).

Sestava faktury vydané - Profi verze

V datovém zdroji sestavy faktury vydané (FavForm.idc) doplníme řídící parametry pro různé cíle tisku:

select *, 
     dbo.fnTxt_TXTKurzHdok (%idHdok%, 'Kurz pouze pro účely DPH', '%PRN_Lang%') as TXTKurzHdok,
     (select count(*) 
        from dbo.fnDZ_RekapDPHZalohV23(%idHdok%, '%PRN_Lang%', NULL)
        where vlDetail_Soucet < 10
        ) as PocetDPHZaloh,
  '%SENDMAILTO%' as MF_SENDMAILTO,
  '%SENDMAILSUBJECT%' as MF_SENDMAILSUBJECT,
  '%SENDMAILBODY%' as MF_SENDMAILBODY,
  '%FILENAME%' as MF_FILENAME,
   %SHOWMAIL% as mf_ShowMail
from dbo.fnDZ_FormularHDOK(
%idHdok%, 
%idLogUser%, 
'%PRN_Lang%',
'%mf_NeAnoPrefVeta%')


Nově přidané parametry se musí objevit i v seznamu parametrů sestavy:
Pouhou úpravou hyperlinku tak bude možné přesměrovat výstup téže sestavy do různých cílů.

Formulář faktury vydané

Parametry přidané do datového zdroje sestavy v předchozí kapitole musíme přidat i do datového zdroje formuláře faktury vydané (Prodej\FaV.htm). Jednotlivé položky datového zdroje faktury by se v reálu plnily dynamicky, zde budou naplněné statickými hodnotami:

SELECT ...
       'josef.novak@email.com; BCC: %UP_UZIV_EMAIL%' as SENDMAILTO,
       'Faktura č.' + CIS_DOK as SENDMAILSUBJECT,
       '&lt;html&gt;&lt;head&gt;&lt;title&gt;E-mail&lt;/title&gt;&lt;BODY&gt;&lt;p&gt;&lt;font size=10 color=red&gt;Tělo e-mailu.&lt;/font&gt;&lt;/p&gt;&lt;/BODY&gt;&lt;/HTML&gt;' as SENDMAILBODY,
       'c:\Reports\FV' + CIS_DOK as FILENAME,
       0 as SHOWMAIL,
       case
         when CIS_DOK='0117090001' then 2
         else 0
       end as DPRINT 
FROM QHDOK_FAV
%WHERE%
%ORDERBY%"


Parametr SENDMAILBODY (který následně v datovém zdroji sestavy plní parametr MF_SENDMAILBODY) obsahuje běžný text v HTML, pouze speciální znaky jsou překódované v HTML encodingu tak, aby datový zdroj korektně prošel aplikačním serverem a oběma klienty. Pokud je tělo e-mailu v HTML kódu, přepne se při odesílání mailu jeho formát na HTML.
Jednotlivé tisky z níže uváděných příkladů lze formou odkazu doplnit buď přímo do předlohy formuláře všem, nebo pomocí uživatelských akcí (činnost 9.6.14) jen vybraným uživatelům nebo jejich skupinám.

Tisk sestavy na monitor

Nejjednodušším tiskovým výstupem je výstup sestavy na monitor. Protože však sestava i formulář obsahují řídící parametry pro jiné cíle výstupu (e-mail), musím tyto parametry pro výstup na monitor potlačit/vynulovat v odkazu (parametry v odkazu mají přednost před parametry z vazby). Provedu to přiřazením prázdné hodnoty. Syntaxe odkazu pak bude vypadat následovně:

<a href="esoform.asp?TPage=prodej/TForm/FavForm.idc&amp;RelType=Parameters&amp;RepeatFor=Query&amp;Legislativa=<%UP_Legislativa%>&amp;SENDMAILTO=&amp;FILENAME=">Tisk sestavy na monitor</a>


Pro výstup na monitor se použije výchozí formát sestavy, kterým je typ výpisu STI. V obecném klientovi to bude formát HTML5 zobrazený s nástrojovou lištou, která umožňuje tisk zobrzené sestavy, její uložení do souboru či odeslání e-mailem.
Sestavy lze tisknout i hromadně použitím parametru RepeatFor=Query, který vyvolá před tiskem dialog s dotazem na tisk jedné sestavy / všech označených / všech.

Tisk sestavy do PDF

Pokud chci sestavu vytisknout do některého z dostupných souborových formátů (PFD, JPG, DOCX, XLSX, …), doplním stávající odkaz o parametr PRINTDEST s příslušnou hodnotou, např.:

<a href="esoform.asp?TPage=prodej/TForm/FavForm.idc&amp;RelType=Parameters&amp;RepeatFor=Query&amp;Legislativa=<%UP_Legislativa%>&amp;SENDMAILTO=&amp;FILENAME=&amp;PRINTDEST=STIPDF">Tisk faktury do PDF</a>


Sestava se vygeneruje do požadovaného formátu a otevře se přímo ve formuláři ESO9 k náhledu:

Pokud prohlížeč neumí zobrazit daný typu souboru přímo (např. XLSX), pouze jej stáhne a nabídne uživateli k zobrazení či rovnou otevření v programu asociovaném s danou příponou (např. MS Excel).

Odeslání sestavy e-mailem

Pro odeslání sestavy e-mailem použijeme parametr SENDMAILTO z datového zdroje formuláře, kterým se v datovém zdroji sestavy naplní parametr MF_SENDMAILTO. Tento parametr tedy přenášíme vazbou na na odkaze jej již neuvádíme.

Konfigurace e-mailového klienta v obecném klientovi

Před odesláním první sestavy je třeba provést jednorázové nastavení poštovního klienta. Obecný klient neodesílá e-maily sám, ale využívá k tomu aplikační server; konfigurace pošty proto probíhá přímo v aplikaci nastavením aplikačních parametrů ze skupiny EMAIL:
Pro jednotlivé aplikační parametry lze definovat buď specifickou hodnotu pro jednotlivé uživatele, nebo globální hodnotu pro celou aplikaci. V uvedeném příkladu mají všichni vyjmenovaní uživatelé nastavenou hodnotu parametru SMTP_FROM (adresa odesílatele), všichni ostatní pak budou odesílat e-maily s globální adresou danou parametrem na úrovni aplikace.

Vlastní odeslání sestavy

Vlastní odeslání sestavy e-mailem provedeme přenesením hodnoty položky SENDMAILTO vazbou z datového zdroje formuláře do položky MF_SENDMAILTO v datovém zdroji sestavy (adresa příjemce). V našem příkladu se e-mail odesílá na dvě adresy ( 'josef.novak@email.com; BCC: %UP_UZIV_EMAIL%' as SENDMAILTO); prefix BCC: říká, že se každá odesílaná sestava pošle zároveň ve slepé kopii na uživatele, který ji odesílá. Lze si tak snadno archivovat veškeré odeslané sestavy. Stejným způsobem (tj.vazbou) se předají i parametry SENDMAILSUBJECT, SENDMAILBODY a FILENAME. Odkaz bude vypadat následovně:

<a href="esoform.asp?TPage=prodej/TForm/FavForm.idc&amp;RelType=Parameters&amp;RepeatFor=Query&amp;PageBreak=Auto&amp;PRN_LANG=<%UP_Legislativa%>&amp;Legislativa=<%UP_Legislativa%>">Odeslání faktury mailem</a>

Parametr PRINTDEST změní výchozí formát sestavy z STI (tedy HTML5) na STIPDF.

Odeslání sestavy s náhledem

E-mail lze z aplikace ESO9 odeslat buď automaticky na pozadí, nebo s možností zobrazit si jej před odesláním ve výchozím e-mailovém klientovi. Zobrazení náhledu se nastavuje přímo v aplikaci v parametru SHOW_EMAIL (sekce EMAIL). Tento parametr může být přetížen parametrem MF_SHOWMAIL, který jsme přidali do datového zdroje sestavy a plníme jej položkou SHOWMAIL v datovém zdroji formuláře. V našem případě je sice náhled e-mailu v aplikačních parametrech vypnutý, ale přesto se zobrazí, protože v datovém zdroji formuláře je uvedeno 1 as SHOWMAIL. Stejnou sestavu lze tedy jedním odkazem např. většině odběratelů odeslat automaticky a vybraným zobrazit před odesláním k náhledu/ke kontrole.
K náhledu se používá EML soubor s obsahem e-mailu. Ten se stáhne na klientskou stanici, následně je možné jej otevřít ve výchozím e-mailovém programu a dále s ním pracovat. Po stažení prvního EML souboru lze v některých prohlížečích (MS Edge, Google Chrom) ve vlastnostech staženého souboru zaškrtnout volbu „Vždycky otevírat soubory tohoto typu“. E-mail se tak po svém stažení automaticky otevře ve výchozím e-mailovém klientovi (např. MS Outlook).

Náhled takto vygenerovaného e-mailu bude vypadat následovně:

Odeslání sestavy e-mailem s pojmenovanou přílohou

V datovém zdroji formuláře jsme si nadefinovali položku FILENAME jako 'c:\Reports\FV' + CIS_DOK. Sestavili jsme si tak absolutní cestu k souboru. Pokud jméno souboru uvedeme bez přípony, doplní ji aplikační server automaticky dle typu generovaného souboru. Datová položka FILENAME se následně vazbou přenese do položky MF_FILENAME v datovém zdroji sestavy. Generátor sestav pak použije takto předané jméno souboru pro všechny typy výstupů, které zahrnují generování souboru se sestavou. V případě odeslání sestavy e-mailem se předaný název souboru použije k pojmenování přílohy, jak je vidět v náhledu e-mailu.

Pokud je soubor zadán pouze svým jménem bez cesty, použije se pouze pro vygenerování e-mailu a po odeslání se z disku smaže (dočasně se ukládá do uživatelského TEMP adresáře). Pokud je soubor zadán včetně plné cesty (jako v našem příkladu), zůstane soubor po odeslání e-mailu v souborovém úložišti (viz datový zdroj formuláře faktury vydané). Jedním odkazem tak lze odeslat sestavu e-mailem a zároveň souborově archivovat.

Odeslání sestavy s více přílohami

Pokud chceme spolu se sestavou odeslat e-mailem více příloh (např. ceníky, atesty či smlouvy), stačí na začátek e-mailové adresy příjemce uvést znak „$“ (např. '$josef.novak@email.com; BCC: %UP_UZIV_EMAIL%' as SENDMAILTO). Taková syntaxe odešle kromě vlastní sestavy i všechny přílohy daného dokladu z DMS kromě těch, v jejichž popisu je uvedeno klíčové slovo „NE“ (např. ceníky obsahující kromě koncové ceny i cenu nákupní, které není žádoucí zpřístupňovat zákazníkovi).

V rámci implementace je možné přikládat k e-mailu se sestavou další dokumenty z DMS podle typu vazby (položka VLTYPVAZBY v tabulce DOKUMENT_VAZBA). Standardně jsou v ESO9Start dokumenty navázané přes typ vazby 0. V rámci implementace si lze stejný dokument(-y) navázat zároveň na další tabulky. Aby se taková vazba nezobrazovala v běžných formulářích DMS, lze ji odlišit typem (např. 1) a provázat tak např. všechny dokumenty navázané ke zboží (potažmo ke složkám dokladu) zároveň k hlavičce dokladu (např. skladové výdejky). Dojde tím pouze k agregaci vazeb, vlastní dokumenty zůstanou v dokumentové databázi beze změny. Při odeslání sestavy skladové výdejky se k e-mailu přiloží všechny dokumenty z DMS navázané typem vazby 1.
Nastavení typu vazby se provádí v aplikačním parametru DMS_VLTYPVAZBY.

Tisk sestavy do souboru

Pokud chceme sestavu pouze uložit do souboru, ponecháme hodnotu parametru MF_FILENAME z předchozího příkladu a vynulujeme hodnotu parametru MF_SENDMAILTO (tj. parametr SENDMAILTO na odkazu). Zároveň opět parametrem PRINTDEST přepneme typ výstupu z HTML5 na PDF.

<a href="esoform.asp?TPage=prodej/TForm/FavForm.idc&amp;RelType=Parameters&amp;RepeatFor=Query&amp;Legislativa=<%UP_Legislativa%>&amp;SENDMAILTO=&amp;PRINTDEST=STIPDF">Tisk sestavy do souboru</a>

Sestavy lze samozřejmě tisknout i hromadně použitím parametru RepeatFor=Query. Označením několika dokladů a volbou při tisku „Všechny označené“ snadno vytiskneme sestavy do souboru(-ů) hromadně:

Ve složce c:\reports (dané hodnotou datové položky FILENAME jsou pak uložené všechny vytištěné sestavy:

Při počtu sestav cca nad 100 je výhodnější (z hlediska rychlosti tisku i spotřeby operační paměti) použít další produkt z oblasti technologie ESO9, kterým je Reporting Server.

Přímý tisk sestavy na tiskárnu

Vzhledem k rozsáhlosti tohoto tématu je nastavení přímého tisku popsáno ve vlastním článku.

Přímý tisk sestavy do DMS

Pokud je ve firmě nasazen čistě elektronický oběh dokladů, lze použít přímý tisk sestav do DMS. Tisk je implementován parametrem DIRECTPRINT a to buď jen do DMS (hodnota 3), do DMS v kombinaci s tiskem na monitor (hodnota 4) nebo do DMS v kombinaci s tiskem do souboru a na monitor (hodnota 7).

<a href="esoform.asp?TPage=prodej/TForm/FavForm.idc&amp;RelType=Parameters&amp;RepeatFor=Query&amp;Legislativa=<%UP_Legislativa%>&amp;SENDMAILTO=&amp;FILENAME=&amp;DIRECTPRINT=3&amp;PRINTDEST=STIPDF">Přímý tisk do DMS</a>

Po tisku se zobrazí informační hlášení „Sestava(-y) byla uložena do DMS.“ a řízení se vrací na formulář s původním dokladem. Pokud po tisku do DMS chceme automaticky obnovit formulář tak, aby bylo vidět nově založený dokument(-y), stačí v záhlaví HTML formuláře uvést META tag:

 <meta name="REQUERY" content="1">

Pokud je při použití parametru DIRECTPRINT s hodnotou 4 zároveň použit některý z parametrů MF_SendMailTo nebo MF_FileName, provede se kromě uložení sestavy do DMS ještě její odeslání e-mailem nebo uložení do souboru. Při kombinaci obou cílů (e-mail i soubor) bude parametr MF_FileName zároveň definovat jméno souboru s přílohou e-mailu.

Typ dokumentu

Při přímém tisku sestavy do DMS vzniká dokument, který ve výchozím stavu nemá definován žádný typ (každý dokument v DMS může být určitého typu, ty se definují v tabulce TYPDOC a jejich číselník je dostupný na všech formulářích s DMS). Pokud chceme, aby dokument rovnou vznikal s definovaným typem, je třeba v datovém zdroji sestavy naplnit položku MF_IDTYPDOC hodnotou IDTYPDOC z číselníku typů dokumentů. Např.:

(select IDTYPDOC from TYPDOC where KOD_TYPDOC='UCD') as MF_IDTYPDOC

Přímý tisk sestavy na monitor, do souboru a do DMS

Pokud jste prošli ultimativním testem trpělivosti až sem, zbývá poslední kombinace zpracování sestavy a tou je přímý tisk na monitor, do souboru a do DMS. Tisk je realizován parametrem DIRECTPRINT s hodnotou 7.

<a href="esoform.asp?TPage=prodej/TForm/FavForm.idc&amp;RelType=Parameters&amp;RepeatFor=Query&amp;Legislativa=<%UP_Legislativa%>&amp;SENDMAILTO=&amp;DIRECTPRINT=7&amp;PRINTDEST=STIPDF">Přímý tisk monitor, do souboru a do DMS</a>

Odeslání sestavy e-mailem - Start varianta

V ESO9 Start se všechny parametry potřebné pro odeslání sestavy mailem doplňují automaticky v činnosti 9.6.3.5 Odesílání dokladů e-mailem. V této činnosti se nastaví:

V datovém zdroji sestavy, která se bude tisknout s využitím této tabulky, je třeba doplnit:

OUTER APPLY dbo.fnDok_EMail(%VLSENDMAIL%, dbo.fnDZ_FormularHDOK.idhdok) email
SELECT ..., email.MF_SendMailTo, email.MF_SendMailSubject, email.MF_SendMailBody
SELECT *, 
     dbo.fnTxt_TXTKurzHdok (%idHdok%, 'Kurz pouze pro účely DPH', '%PRN_Lang%') as TXTKurzHdok,
     (select count(*) 
        from dbo.fnDZ_RekapDPHZalohV23(%idHdok%, '%PRN_Lang%', NULL)
        where vlDetail_Soucet < 10
        ) as PocetDPHZaloh,
       email.MF_SendMailTo,
       email.MF_SendMailSubject,
       email.MF_SendMailBody
FROM dbo.fnDZ_FormularHDOK(
%idHdok%, 
%idLogUser%, 
'%PRN_Lang%',
'%mf_NeAnoPrefVeta%')
OUTER APPLY dbo.fnDok_EMail(%VLSENDMAIL%, dbo.fnDZ_FormularHDOK.idhdok) email
<a href="esoform.asp?TPage=FavForm.idc&RelType=Parameters&RepeatFor=Query&PageBreak=Auto&PRN_LANG=<%UP_Legislativa%>&Legislativa=<%UP_Legislativa%>&VLSENDMAIL=1">Odeslání faktury mailem</a>

Digitální podpis

Je-li sestava vytištěna do formátu PDF, může být opatřena digitálním podpisem, resp. podpisy. Příslušný certifikát, jímž bude sestava podepsána, je třeba nejprve zaevidovat v aplikaci v činnosti 9.8.11 Certifikáty. Sériové číslo certifikátu se následně zadává do aplikačního parametru CERT_SN ze skupiny EMAIL. Všichni uživatelé mohou podepisovat sestavy stejným certifikátem, nebo mohou mít vybraní uživatelé vlastní certifikáty; v takovém případě se využívá hodnota parametru CERT_SN pro jednotlivé uživatele.
Každý certifikát má ve svých vlastnostech uveden mj. účel svého vystavení; pro účely podepisování PDF musí být vystaven za účelem digitálního podepisování.

Chyby CSP (Cryptographic Services Provider)

Pokud v PDF výstupech z ESO9 digitální podpis chybí, na vině může být zastaralý tzv. CSP (Cryptographic Services Provider). Pokud je digitální certifikát vystaven s CSP „Microsoft Enhanced Cryptographic Provider v1.0“, nepodporuje podepisování algoritmem SHA256, ale pouze zastaralým SHA1. Certifikát proto musí být vystaven s CSP „Microsoft Enhanced RSA and AES Cryptographic Provider“. Pokud již máme takový certifikát zakoupený, lze do něj správný CSP „přidat“.
Postup:

openssl pkcs12 -in cert.pfx -nocerts -out key.pem -nodes
openssl pkcs12 -in cert.pfx -clcerts -nokeys -out cert.pem  
openssl pkcs12 -export -out NewCert.p12 -inkey key.pem -in cert.pem -name My -CSP "Microsoft Enhanced RSA and AES Cryptographic Provider"

Vkládání ISDOC do tiskových výstupů účetních dokladů

Pokud se v ESO9 tiskne účetní doklad, automaticky obsahuje vložený soubor ISDOC pro snadný import dokladu protistranou. Vložení ISDOCu do PDF sestavy je podmíněno parametrem TYP_DOK_ISDOC v datovém zdroji sestavy. V rámci ESO9 Start je tato položka součástí obecného datového zdroje hlaviček pro hlavičky dokladů fnDZ_FormularHDOK. Tzn., že v rámci ESO9 Start se do všech sestav tištěných z účetních dokladů vkládá příloha ve formátu ISDOC.

DokuWiki Appliance - Powered by TurnKey Linux