Příklad nastavení Akce pro realizaci zakázky

Akce "Realizovat" pro zakázku v agendě Zakázky

Příklad popisuje vytvoření akce, která:
  1. Vyskladní a fakturuje položky zakázky
  2. Vytiskne fakturu a dodací list
  3. E-mailem odešle zákazníkovi informaci o realizované zakázce
  4. E-mailem odešle skladníkovi příkaz k expedici (s číslem výdejky)
  5. V příloze e-mailu odešle zákazníkovi fakturu v PDF formátu

 

Nastavení akce "Realizovat"

 

V agendě Zakázky otevřete dialog Možnosti Vario a v levé části dialogu klepněte na položku Akce pro agendu Zakázky (cesta: Moduly: Zakázky / Agendy: Zakázky / Akce) – viz obr. 1.

 

V pravé části dialogu, do pole sloupce Akce, zapište pojmenování akce, – v tomto případě Realizovat. Text přechodem na jiné pole "zmodrá" – na modrý identifikátor poklepejte. Otevře se dialog Možnosti akce – karta Obecné.

Dialog Možnosti akce pro agendu Zakázky

Obrázek 1: Dialog Možnosti akce, karta Obecné.

 

Nastavení pro dialog Možnosti akce – karta Obecné (podmínka zobrazení akce – obr. 1)

 
 
 
 
 
Akce Realizovat Tato akce se nabídne uživateli v aktuálním dokladu (v zakázce) tehdy, bude-li obsahovat buď skladové položky, které nejsou ve stavu OK, a nebo neskladové položky (např. typ produktu Služby, které nemají vazbu na sklad) a tyto jsou ve stavu nulovém (pole sloupce Stav je prázdné), a nebo se musí lišit od stavu OK.
Pořadí 1
Podmínka zobrazení akce

Vario.Databaze.AdHocDotaz("Data####", "PARAMETERS parCisloDokladu text;SELECT Count(*) FROM Polozky_dokladu WHERE Cislo_dokladu=[parCisloDokladu] AND (((NOT Sklad IS NULL) AND (Stav<>'OK')) OR ((Sklad IS NULL) AND (Stav<>'OK' OR Stav IS NULL)))", [Cislo_dokladu]).DejHodnotu()>0Poznámka: vždy zvažte použití SQL dotazů v podmínce. Tato podmínka bude zpomalovat otevření dokladu a případně práci s ním. Ideální je v podmínce pouze kontrolovat hodnotu pole Stav_dokladu.

Podmínka při spuštění akce Nevyplňujte
Používat oprávnění Nevyplňujte

 

1. Vyskladnit a fakturovat položky zakázky

Dialog Možnosti akce, karta Záznamy, podřízená karta Záznamy, dialog UI makra akce

Obrázek 2: Dialog Možnosti akce, karta Záznamy, podřízená karta Záznamy, dialog UI makra akce.

 

→ Přepněte se na kartu Záznamy / podřízená záložka Záznamy. Ze seznamu instrukcí vyberte Spustit makro. Na modrý identifikátor poklepejte. Otevře se dialog UI makra akce typu instrukce Spustit makro (v odkazovaném dokumentu obr. 6a). Zadejte následující výraz:

Me.subPolozky.SetFocus()

Me. Odkaz na konkrétní formulář, nad kterým se makro spustí. V tomto případě nad dokladem typu Zakázka.

subPolozky.SetFocus()  Nastavení fokusu na kartu Položky v detailu dokladu (pro inicializaci položek zakázky).

 

→ Dialog uzavřete a hodnotu uložíte klepnutím na tlačítko OK.

První řádek s instrukcí Spustit makro by měl vypadat takto:

 

 
 
 
 
 
Pořadí 1
Záznam (instrukce) Spustit makro
Interaktivní false
Skončit při chybě CheckBox - Zatržítko
Podmínka před  

 

→ Postup opakujte. Ze seznamu instrukcí vyberte Spustit makro. Na modrý identifikátor poklepejte. Otevře se dialog UI makra akce (v odkazovaném dokumentu obr. 6a). Zadejte následující výraz:

toAkceStavu(102400, 1)

Funkce, která nastavuje stav položek dokladu. První parametr je číslo, které naleznete v dokumentu Akce – příklady použití funkcí a příkazy z menu Stav, odstavec Výpis příkazů z menu Stav/Stavy pro zakázku/Vystavit fakturu a vyskladnit (OK).

 

→ Dialog uzavřete a hodnotu uložíte klepnutím na tlačítko OK

Druhý řádek s instrukcí Spustit makro by měl vypadat takto:

 

 
 
 
 
 
Pořadí 2
Záznam (instrukce) Spustit makro
Interaktivní false
Skončit při chybě CheckBox - Zatržítko
Podmínka před  

 

Shrnutí
Makra 1 a 2 plní funkci „Vyskladnit a fakturovat“.
První makro odpovídá za nastavení fokusu na záložku Položky dokladu (funkce toAkceStavu pracuje s aktuálním dokladem, nad kterým se akce spouští a vyžaduje načtené položky dokladu).
Druhé makro provede vyskladnění a fakturaci.

 

Skladové a neskladové položky zakázky

Abyste mohli vytisknout fakturu (nebo jiný tiskový formulář, který je související doklad k zakázce), musíte ji dotazem předem zjistit. Zároveň je třeba ošetřit přítomnost skladových a neskladových položek v zakázce. Za tímto účelem zadejte další dvě makra, která zaručí univerzální způsob zjištění čísla faktury pro různé typy položek (skladové a neskladové).

 

→ Ze seznamu instrukcí vyberte Spustit makro. Na modrý identifikátor poklepejte. Otevře se dialog UI makra akce (v odkazovaném dokumentu obr. 6a). Zadejte následující výraz:

 Set [Akce!FakturaSkladovaPolozka] = Vario.Databaze.AdHocDotaz("Data####", "PARAMETERS parCisloDokladu text;SELECT TOP 1 Cislo_ucetniho_dokladu FROM Polozky_dokladu_produkty WHERE Cislo_obchodniho_dokladu=[parCisloDokladu] and cislo_ucetniho_dokladu is not null ORDER BY Datum_aktualizace DESC", [Cislo_dokladu]).DejHodnotu()

 Dotaz makra vrátí hodnotu pro skladovou položku. Související doklad pro skladovou položku se zjišťuje z tabulky Polozky_dokladu_produkty

 

→ Dialog uzavřete a hodnotu uložíte klepnutím na tlačítko OK

Třetí řádek s instrukcí Spustit makro by měl vypadat takto:

 

 
 
 
 
 
Pořadí 3
Záznam (instrukce) Spustit makro
Interaktivní false
Skončit při chybě CheckBox - Zatržítko
Podmínka před  

 

→ Ze seznamu instrukcí vyberte Spustit makro. Na modrý identifikátor poklepejte. Otevře se dialog UI makra akce (v odkazovaném dokumentu obr. 6a). Zadejte následující výraz:

 Set [Akce!FakturaNeskladovaPolozka] = Vario.Databaze.AdHocDotaz("Data####", "PARAMETERS parCisloDokladu text;SELECT TOP 1 Polozky_dokladu.Cislo_dokladu FROM Doklady INNER JOIN Polozky_dokladu ON Doklady.Cislo_dokladu = Polozky_dokladu.Cislo_dokladu WHERE (((Polozky_dokladu.Zakazka)=[parCisloDokladu])) ORDER BY Doklady.Datum_aktualizace DESC;", [Cislo_dokladu]).DejHodnotu()

 Dotaz makra vrátí hodnotu pro neskladovou položku. Související doklad pro neskladovou položku se zjišťuje z tabulky Doklady a z tabulky Polozky_dokladu

 

→ Dialog uzavřete a hodnotu uložíte klepnutím na tlačítko OK

Čtvrtý řádek s instrukcí Spustit makro by měl vypadat takto:

 

 
 
 
 
 
Pořadí 4
Záznam (instrukce) Spustit makro
Interaktivní false
Skončit při chybě CheckBox - Zatržítko
Podmínka před  

 

Výdejka

 → Ze seznamu instrukcí vyberte Spustit makro. Na modrý identifikátor poklepejte. Otevře se dialog UI makra akce (v odkazovaném dokumentu obr. 6a). Zadejte následující výraz:

Set [Akce!Vydejka] = Vario.Databaze.AdHocDotaz("Data####", "PARAMETERS parCisloDokladu text;SELECT TOP 1 Cislo_skladoveho_dokladu FROM Polozky_dokladu_produkty WHERE Cislo_obchodniho_dokladu=[parCisloDokladu] ORDER BY Datum_aktualizace DESC", [Cislo_dokladu]).DejHodnotu()

Zjišťování hodnot pro výdejku. Výdejka může být jen pro skladovou položku a zjišťuje se v tabulce Polozky_dokladu_produkty. Hledá se Cislo_skladoveho_dokladu na základě Cislo_obchodniho_dokladu.

 

→ Dialog uzavřete a hodnotu uložíte klepnutím na tlačítko OK

Pátý řádek s instrukcí Spustit makro by měl vypadat takto:

 

 
 
 
 
 
Pořadí 5
Záznam (instrukce) Spustit makro
Interaktivní false
Skončit při chybě CheckBox - Zatržítko
Podmínka před  

 

Shrnutí
Makra 3 až 5 zjišťují čísla faktury a výdejky, vytvořených v předchozím kroku.
Makro číslo 3 vrátí číslo faktury pro skladové položky dokladu (zjišťuje se z tabulky Polozky_dokladu_produkty). Výsledek provedení makra se uloží do proměnné [Akce!FakturaSkladovaPolozka].
Makro číslo 4 vrátí číslo faktury pro neskladové položky dokladu (zjišťuje se z tabulky Polozky_dokladu). Výsledek provedení makra se uloží do proměnné [Akce!FakturaNeskladovaPolozka].
Makro číslo 5 vrátí číslo výdejky, která vznikla při vyskladnění. Výsledek provedení makra se uloží do proměnné [Akce!Vydejka].

 

2. Tisk faktury a dodacího listu

Jestliže chcete výsledky maker používat, je třeba tato makra nejdříve definovat. Například v tomto postupu vrací výsledek makra 3 až 5. V následujících makrech se na uložená data (výsledky) odkážete zápisem ve formátu [Akce!NazevPromenne]

 

→ Ze seznamu instrukcí vyberte Spustit makro. Na modrý identifikátor poklepejte. Otevře se dialog UI makra akce (v odkazovaném dokumentu obr. 6a). Zadejte následující výraz:

TiskFormulare("Faktura", "Vydané doklady","Cislo_dokladu='" & [Akce!FakturaSkladovaPolozka] & "' OR Cislo_dokladu='" & [Akce!FakturaNeskladovaPolozka] & "'")

První parametr této funkce je název tiskového formuláře, druhý parametr je název agendy, ze které je tiskový formulář volán, a poslední parametr je podmínka faktury, která je použita a zobrazena.

 

→ Dialog uzavřete a hodnotu uložíte klepnutím na tlačítko OK

Šestý řádek s instrukcí Spustit makro by měl vypadat takto:

 

 
 
 
 
 
Pořadí 6
Záznam (instrukce) Spustit makro
Interaktivní false
Skončit při chybě CheckBox - Zatržítko
Podmínka před

Makro tisku faktury se provede jen tehdy, vrátí-li se hodnota (není prázdná) z FakturaSkladovaPolozka
nebo
FakturaNeskladovaPolozka
 [Akce!FakturaSkladovaPolozka] <> "" OR [Akce!FakturaNeskladovaPolozka] <> ""

V poli sloupce Podmínka před použijte klávesovou zkratku Shift+F2 (Lupa...), celý text položky se zobrazí v okně s možností úpravy písma.

 

→ Ze seznamu instrukcí vyberte Spustit makro. Na modrý identifikátor poklepejte. Otevře se dialog UI makra akce (v odkazovaném dokumentu obr. 6a). Zadejte následující výraz:

 TiskFormulare("Dodací list", "Skladové doklady", "Cislo_dokladu='" & [Cislo_dokladu] & "'")

 

→ Dialog uzavřete a hodnotu uložíte klepnutím na tlačítko OK

Sedmý řádek s instrukcí Spustit makro by měl vypadat takto:

 

 
 
 
 
 
Pořadí 7
Záznam (instrukce) Spustit makro
Interaktivní false
Skončit při chybě CheckBox - Zatržítko
Podmínka před  

 

Shrnutí
Makra 6 a 7 provedou tisk tiskových formulářů "Faktura" a "Dodací list". Pro zobrazení náhledů těchto tiskových formulářů je třeba použít místo funkce TiskFormulare funkci UkazkaPredTiskemTiskovehoFormulare. Parametry u těchto dvou funkcí jsou stejné.

 

 3. Odeslat zákazníkovi e-mail s přílohou

→ Ze seznamu instrukcí vyberte Poslat e-mail. Na modrý identifikátor poklepejte. Otevře se dialog Hodnoty záznamu typu instrukce Poslat e-mail (v odkazovaném dokumentu obr. 5c). V dialogu upřesníte v seznamu polí hodnoty ukládané při odeslání e-mailu (nastavení vidíte na obr. 3). Pokud je třeba, v polích sloupce Hodnota použijte klávesovou zkratku Shift+F2 (Lupa...). Celý text položky se zobrazí v okně s možností úpravy písma.

 Dialog Hodnoty záznamu pro typ instrukce Poslat e-mail

 Obrázek 3: Dialog Hodnoty záznamu pro typ instrukce Poslat e-mail.

 

V předchozí verzi typu instrukce Poslat e-mail se používal zápis hodnoty pole ve tvaru=[NazevPole]
Aktuálně se používá  <%[Vyraz]%>
(Oba způsoby jsou funkční.)

 

→ Dialog uzavřete a hodnoty uložíte klepnutím na tlačítko OK

Osmý řádek s instrukcí Poslat e-mail by měl vypadat takto:

 

 
 
 
 
 
Pořadí 8
Záznam (instrukce) Poslat e-mail
Interaktivní CheckBox - Zatržítko
Skončit při chybě CheckBox - Zatržítko
Podmínka před  

 

4. Odeslat skladníkovi e-mail s přílohou (s odkazem na výdejku – pokud výdejka byla vystavena)

→ Ze seznamu instrukcí vyberte Poslat e-mail. Na modrý identifikátor poklepejte. Otevře se dialog Hodnoty záznamu typu instrukce Poslat e-mail (v odkazovaném dokumentu obr. 5c). V dialogu upřesníte v seznamu polí hodnoty ukládané při odeslání e-mailu (nastavení vidíte na obr. 4). Pokud je třeba, v polích sloupce Hodnota použijte klávesovou zkratku Shift+F2 (Lupa...). Celý text položky se zobrazí v okně s možností úpravy písma.

Dialog Hodnoty záznamu pro typ instrukce Poslat e-mail

Obrázek 4: Dialog Hodnoty záznamu pro typ instrukce Poslat e-mail. 

 

→ Dialog uzavřete a hodnoty uložíte klepnutím na tlačítko OK

Devátý řádek s instrukcí Poslat e-mail by měl vypadat takto:

 

 
 
 
 
 
Pořadí 9
Záznam (instrukce) Poslat e-mail
Interaktivní CheckBox - Zatržítko
Skončit při chybě CheckBox - Zatržítko
Podmínka před

Jestliže výdejka existuje, e-mail bude odeslán.
 [Akce!Vydejka] <> ""

V poli sloupce Podmínka před použijte klávesovou zkratku Shift+F2 (Lupa...), celý text položky se zobrazí v okně s možností úpravy písma....

 

 5. Odeslat zákazníkovi v příloze e-mailu fakturu v PDF formátu

→ Ze seznamu instrukcí vyberte Spustit makro. Na modrý identifikátor poklepejte. Otevře se dialog UI makra akce (v odkazovaném dokumentu obr. 6a). Zadejte následující výraz:

Set [Akce!KnihaFaktury] = Vario.Databaze.AdHocDotaz("Data####", "PARAMETERS parCisloDokladu1 text, parCisloDokladu2 text;SELECT TOP 1 Kniha FROM Doklady WHERE Cislo_dokladu=[parCisloDokladu1] OR Cislo_dokladu=[parCisloDokladu2]",[Akce!FakturaSkladovaPolozka], [Akce!FakturaNeskladovaPolozka]).DejHodnotu()

 

→ Dialog uzavřete a hodnotu uložíte klepnutím na tlačítko OK

Desátý řádek s instrukcí Spustit makro by měl vypadat takto:

 

 
 
 
 
 
Pořadí 10
Záznam (instrukce) Spustit makro
Interaktivní false
Skončit při chybě CheckBox - Zatržítko
Podmínka před  

 

Shrnutí
Makro číslo 10 vrátí knihu pro fakturu vystavenou v předchozích krocích. Výsledek provedení makra se uloží do proměnné [Akce! KnihaFaktury].

 

→ Ze seznamu instrukcí vyberte Poslat e-mail. Na modrý identifikátor poklepejte. Otevře se dialog Hodnoty záznamu typu instrukce Poslat e-mail (v odkazovaném dokumentu obr. 5c). V dialogu upřesníte v seznamu polí hodnoty ukládané při odeslání e-mailu (nastavení vidíte na obr. 5). Pokud je třeba, v polích sloupce Hodnota použijte klávesovou zkratku Shift+F2 (Lupa...). Celý text položky se zobrazí v okně s možností úpravy písma.

Dialog Hodnoty záznamu pro typ instrukce Poslat e-mail

Obrázek 5: Dialog Hodnoty záznamu pro typ instrukce Poslat e-mail.

 

→ Dialog uzavřete a hodnoty uložíte klepnutím na tlačítko OK.

Jedenáctý řádek s instrukcí Poslat e-mail by měl vypadat takto:

 

 
 
 
 
 
Pořadí 11
Záznam (instrukce) Poslat e-mail
Interaktivní CheckBox - Zatržítko
Skončit při chybě CheckBox - Zatržítko
Podmínka před

Instrukce proběhne, pokud faktura existuje a je nalezena kniha.
 ([Akce!FakturaSkladovaPolozka] <> "" OR [Akce!FakturaNeskladovaPolozka] <> "") AND [Akce!KnihaFaktury] <> ""

V poli sloupce Podmínka před použijte klávesovou zkratku Shift+F2 (Lupa...), celý text položky se zobrazí v okně s možností úpravy písma.

 

Shrnutí
Instrukce 11 odešle fakturu v PDF e-mailem.

 

→ Nastavení na kartách dialogu Možnosti akce uložíte tlačítkem Zavřít

 

Rychlé zadání instrukcí na kartě Záznamy/podřízené kartě XML (kopírováním a vložením)

<Makro interaktivni="0" failOnError="1">Me.subPolozky.SetFocus()</Makro><Makro interaktivni="0" failOnError="1">toAkceStavu(102400, 1)</Makro><Makro interaktivni="0" failOnError="1">Set [Akce!FakturaSkladovaPolozka] = Vario.Databaze.AdHocDotaz("Data####", "PARAMETERS parCisloDokladu text;SELECT TOP 1 Cislo_ucetniho_dokladu FROM Polozky_dokladu_produkty WHERE Cislo_obchodniho_dokladu=[parCisloDokladu] and cislo_ucetniho_dokladu is not null ORDER BY Datum_aktualizace DESC", [Cislo_dokladu]).DejHodnotu()</Makro><Makro interaktivni="0" failOnError="1">Set [Akce!FakturaNeskladovaPolozka] = Vario.Databaze.AdHocDotaz("Data####", "PARAMETERS parCisloDokladu text;SELECT TOP 1 Polozky_dokladu.Cislo_dokladu FROM Doklady INNER JOIN Polozky_dokladu ON Doklady.Cislo_dokladu = Polozky_dokladu.Cislo_dokladu WHERE (((Polozky_dokladu.Zakazka)=[parCisloDokladu])) ORDER BY Doklady.Datum_aktualizace DESC;", [Cislo_dokladu]).DejHodnotu()</Makro><Makro interaktivni="0" failOnError="1">Set [Akce!Vydejka] = Vario.Databaze.AdHocDotaz("Data####", "PARAMETERS parCisloDokladu text;SELECT TOP 1 Cislo_skladoveho_dokladu FROM Polozky_dokladu_produkty WHERE Cislo_obchodniho_dokladu=[parCisloDokladu] ORDER BY Datum_aktualizace DESC", [Cislo_dokladu]).DejHodnotu()</Makro><Makro interaktivni="0" failOnError="1" podminkaPred="[Akce!FakturaSkladovaPolozka] <> "" OR [Akce!FakturaNeskladovaPolozka] <> """>TiskFormulare("Faktura", "Vydané doklady","Cislo_dokladu='" & [Akce!FakturaSkladovaPolozka] & "' OR Cislo_dokladu='" & [Akce!FakturaNeskladovaPolozka] & "'")</Makro><Makro interaktivni="0" failOnError="1">TiskFormulare("Dodací list", "Skladové doklady", "Cislo_dokladu='" & [Cislo_dokladu] & "'")</Makro><Email interaktivni="1" failOnError="1"><Komu><%[E_mail]%></Komu><Kopie><%[E_mail]%></Kopie><Predmet>Zakázka <%[Cislo_dokladu]%></Predmet><Priloha><%UlozitTFJakoPrilohu("Zakázka", [Kniha], "Cislo_dokladu='"&[Cislo_dokladu]&"'")%></Priloha><Zprava>Text zprávy pro zákazníka...</Zprava><Sablona>Sablona</Sablona></Email><Email interaktivni="1" failOnError="1" podminkaPred="[Akce!Vydejka] <> """><Komu>prikazskladnikovi@vyskladnit.cz</Komu><Predmet>Příkaz k expedici<%[Akce!Vydejka]%></Predmet><Zprava>Text zprávy skladníkovi...</Zprava></Email><Makro interaktivni="0" failOnError="1">Set [Akce!KnihaFaktury] = Vario.Databaze.AdHocDotaz("Data####", "PARAMETERS parCisloDokladu1 text, parCisloDokladu2 text;SELECT TOP 1 Kniha FROM Doklady WHERE Cislo_dokladu=[parCisloDokladu1] OR Cislo_dokladu=[parCisloDokladu2]",[Akce!FakturaSkladovaPolozka], [Akce!FakturaNeskladovaPolozka]).DejHodnotu()</Makro><Email interaktivni="1" failOnError="1" podminkaPred="([Akce!FakturaSkladovaPolozka] <> "" OR [Akce!FakturaNeskladovaPolozka] <> "") AND [Akce!KnihaFaktury] <> """><Komu><%[E_mail]%></Komu><Kopie><%[E_mail]%></Kopie><Predmet>Faktura k zakázce <%[Cislo_dokladu]%></Predmet><Priloha><%UlozitTFJakoPrilohu("Faktura", [Akce!KnihaFaktury], "Cislo_dokladu='"&[Akce!FakturaSkladovaPolozka]&"' OR Cislo_dokladu='"&[Akce!FakturaNeskladovaPolozka]&"'")%></Priloha><Zprava>Text zprávy při odesílání faktury...</Zprava></Email>

 

Související dokumenty