Obsah šablony

#37

Do page.mustache vlo­žíme obsah šablony. Nadefinujeme si zde, co se bude na faktuře zobrazovat. Data se budou nahrávat z tabulek.

Pro zobrazení dat, ze kterých budeme obsah dokladu nahrávat si můžeme stáhnout json některého z dokladů, abychom nemuseli hledat v tabulkách. V souboru se nám zobrazí stromová struktura s jednotlivými sloupci tabulky, ze kterých budeme moci data čerpat.

Pro stáhnutí souboru si v databázi najdeme libovolný doklad a necháme si zobrazit jeho pdf. Poté zkopírujeme jeho url, otevřeme v prohlížeči novou kartu a url vložíme. Za url doplníme ?saveas=json a potvrdíme entrem. Do počítače se nám stáhne soubor, který otevřeme. Nyní již vidíme zdroje dat, ze kterých budeme brát id pro načítání dat.

Stejným způsobem lze vygenerovat html kód pro daný doklad.

Data dokladu

Zde je příklad načtení dat pro jméno osoby, která je na faktuře zadaná jako odběratel:

{{data.person.fullName}}

Příkaz vytvoříme následujícím způsobem:

Na začátek příkazu vložíme data. a poté přidáme id daného místa, ze kterého budeme čerpat. Pokud jsme si stáhli json soubor a máme ho otevřený, najdeme si ve stromu dané místo (zde je to person) a ze složených závorek k němu vybereme ještě upřesněný, který konkrétní údaj (sloupec tabulky) si přejeme načíst.

V některých případech budeme muset použít příkaz, ve kterém půjdeme do více tabulek/na více míst. Příklad může být tento:

{{data.owner.address.city}}

Zde se nejdříve musíme dozvědět osobu z tabulky Osoby a následně město z tabulky Adresy.

Pokud máme otevřený soubor, najdeme si person (samostatné jako první ve stromu, ne jako sloupec jiné tabulky). Abychom dostali město Vlastní osoby, najdeme si v závorce ve stromu ještě lists a poté address. Přidáním address. vstoupíme do další tabulky, ze které nyní již můžeme odkázat na sloupec city. Kdybychom použili jen data.person.city, data by se nenašla.

Zde je přehled tabulek, které budeme používat. V ID tabulky najdeme ID pro tabulku. Po kliknutí na něj se nám otevře přehled celé tabulky, ze kterého si následně vybereme ID pro sloupec, ze kterého budeme data brát.

ID tabulky Funkce tabulky
head Doklady
person Osoby
owner Vlastní osoba (tabulky Osoby)
author Vystavil (tabulka Osoby)
rows Řádky dokladu
invrows Řádky dokladu (Příjemka, Výdejka)
myBankPerson Bankovní spojení vlastní osoby
myBankAccount Účet vlastní osoby z Vlastního bankovního spojení
ros Data o EET z tabulek Registrace k EET a Evidence tržeb
docs_properties Vlastnosti dokladů (např. Poznámka externí)
taxes Daně dokladů
additions Dodatky dokladů

Ostatní data

ID Funkce
spayed Vytvoří QR kód pro platbu (viz níže)
flags Pomocné data (cizí měna, daně,…)
documentName Typ (jméno) dokladu (např. Faktura vydaná)
reportTexts Texty na dokladech (za tečku upřesníme kde se text nachází)
taxNotes Poznámky ohledně daně za tabulkou pro shrnutí daně
additionsExists Dodatky dokladů

Výše byl příklad jednoduchého načtení informací. Když použijeme tento jednoduchý kód, informace se zobrazí vždy. Tady je příklad pro variabilní a specifický symbol, kdy použijeme dva způsoby kódu, které budou mít jiné výsledky:

{{@dict;Variabilní symbol}}:</td><td class='value'>{data.head.symbol1}}

{{#data.head.symbol2}}
  { {@dict;Specifický symbol}}:</td><td class='value'>{{data.head.symbol2}}
{{/data.head.symbol2}}

Tímto docílíme, že řádek pro Variabilní symbol se zobrazí vždy, i přes to že na faktuře variabilní symbol zadaný nebude. Na řádku bude „Variabilní symbol: “.

Pokud však Specifický symbol nebude ve faktuře vyplnění, po použití tohoto kódu se na faktuře řádek pro něj nezobrazí.

Pokud potřebujeme vložit možnost buď/nebo, použijeme tento kód:

{{#data.head.correctiveDoc}}
  <span class='documentName'>{{@dict;Opravný daňový doklad}}</span>
{{/data.head.correctiveDoc}}

{{^data.head.correctiveDoc}}
  <span class='documentName'>{{@dict;Faktura - daňový doklad}}</span>
{{/data.head.correctiveDoc}}

V tomto příkladu chceme vytvořit nadpis pro fakturu. První možnost začneme znakem # a druhou znakem ^. Druhá možnost se vyplní pokud nebude platit první.

Řádky faktury

Pro řádky vytvoříme tabulku, které jako první vytvoříme hlavičku a poté ji začneme naplňovat.

	<table id='rows'>
		<thead>
		<tr>
			<th>{{@dict;Položka}}</th>
			<th>{{@dict;Kód p.}}</th>
			<th class='number'>{{@dict;Množství}}</th>
			<th>{{@dict;Jed.}}</th>
			{{#data.head.taxPayer}}
				<th class='number'>% {{@dict;DPH}}</th>
			{{/data.head.taxPayer}}
			<th class='number'>{{@dict;Cena/jed.}}</th>
			<th class='number'>{{@dict;Cena celkem}}</th>
		</tr>
		</thead>
		{{#data.rows}}
			<tr>
				<td>{{text}}{ {#additionsMarks}}<sup> {{additionsMarks}}</sup>{{/additionsMarks}}</td>
				<td>{{itemID}}</td>
				<td class='number'>{{quantity}}</td>
				<td>{{@dict;dataItem:print.unit}}</td>
				{{#data.head.taxPayer}}
					<td class='number'>{{taxPercents}}</td>
				{{/data.head.taxPayer}}
				<td class='number'>{{print.priceItem}}</td>
				<td class='number'>{{print.priceAll}}</td>
			</tr>
		{{/data.rows}}
	</table>
  • < td class=‚number‘> použijeme, když se údaj týká čísla. To se nám poté naformátuje.
  • additionsMarks jsou dodatky dokladů.

QR kód

{{#data.spayd}}
  <div id='spayd'>
    <img src="{{spaydQRCodeFullFileName}}"/>
      {{@dict;QR platba}}
  </div>
{{/data.spayd}}