====== Doplnění dodatečných údajů ====== ====== 1. Účel funkce ====== Funkce **Doplnění dodatečných údajů** slouží k hromadnému doplnění nebo změně hodnot dodatečných údajů u vybraných záznamů kusové zásoby. Uživatel zadá požadované hodnoty v dialogu funkce a systém následně tyto hodnoty aplikuje na všechny vybrané záznamy. Funkce umožňuje také určit, zda mají prázdné a nulové hodnoty přepsat hodnoty, které jsou již v jednotlivých záznamech uloženy. ---- ====== 2. Spuštění funkce ====== Funkci lze spustit pouze v případě, že je vybrán alespoň jeden záznam kusové zásoby. Pokud není vybrán žádný záznam, systém zobrazí chybové hlášení:
Nebyly vybrány žádné záznamy.Funkce je navržena jako **hromadná**, proto se při jejím spuštění nepřebírají hodnoty ze záznamu, na kterém je aktuálně nastaven focus. Místo toho je vždy vytvořen nový prázdný objekt ''CDodatecneUdaje'', který slouží jako **zdrojový objekt pro hodnoty zadané uživatelem**. ---- ====== 3. Dialog pro zadání údajů ====== Po spuštění funkce se zobrazí dialog **Doplnění dodatečných údajů**. Dialog obsahuje systémem předdefinované atributy a umožňuje uživateli do pohledu přidat také další atributy. Hodnoty zadané v dialogu jsou následně použity jako zdroj hodnot pro všechny vybrané záznamy. ==== Příklad ==== Uživatel vybere 20 kusů zásoby a spustí funkci. V dialogu zadá například: ^Atribut^Hodnota| |Výrobce|ACME| |Číslo výrobce|12345| |Poznámka|Kontrola provedena| |Počet kusů|10| Po potvrzení dialogu budou tyto hodnoty podle pravidel funkce aplikovány na vybraných 20 záznamů. ---- ====== 4. Atributy podporované funkcí ====== Systém automaticky zjišťuje atributy, které jsou v dialogu skutečně dostupné v aktuálním pohledu. Zpracovány jsou atributy podporovaných komponent: * numerické pole, * alfanumerické pole, * textové pole, * checkbox. Ostatní typy komponent nejsou touto funkcí podporovány, například: * datum, * combobox, * další nepodporované typy komponent. Do zpracování jsou zahrnuty pouze atributy, které mají definovaný ''bindingName''. Atributy patřící do skupiny ''dotahovanaData'' jsou ze zpracování automaticky vyloučeny. ---- ====== 5. Dodatečné údaje a kusová zásoba ====== Dodatečné údaje jsou uloženy v objektu ''CDodatecneUdaje'', který je navázán na záznam ''CKusZasoba''. U starších záznamů nemusí být tato vazba vytvořena. Pokud systém při zpracování zjistí, že záznam kusové zásoby nemá objekt dodatečných údajů vytvořen, automaticky jej založí. Současně jsou nastaveny systémové vazební údaje: * **''typZ = TLS'',** * **''typZIdpk = IDPK záznamu kusové zásoby''.** Uživatel tyto hodnoty v rámci této funkce nezadává. ---- ====== 6. Zpracování hodnot ====== Pro každý vybraný záznam systém postupně zpracuje všechny atributy, které byly zjištěny v aktuálním pohledu. Hodnota se získá ze zdrojového objektu vytvořeného při spuštění funkce a následně se zapíše do odpovídajícího atributu cílového záznamu. Rozhodující je nastavení checkboxu: **„Vynulovat nevyplněné atributy“** ---- ====== 7. Checkbox „Vynulovat nevyplněné atributy“ ====== Checkbox je ve výchozím stavu **nezaškrtnutý**. Jeho význam je následující: ==== Checkbox není zaškrtnutý ==== Prázdné nebo nulové hodnoty se nepřenášejí do cílového záznamu. Pokud je tedy cílový atribut již vyplněn, zůstane jeho původní hodnota zachována. Za nevyplněnou hodnotu jsou v aktuální implementaci považovány: * ''BigDecimal'' = ''0'', * ''Integer'' = ''0'', * ''Short'' = ''0'', * prázdný ''Character'', * prázdný nebo pouze mezerový ''String''. ==== Příklad ==== Cílový záznam obsahuje: ^Atribut^Původní hodnota| |Výrobce|ACME| |Číslo výrobce|12345| |Poznámka|Kontrola provedena| Uživatel v dialogu zadá: ^Atribut^Nová hodnota| |Výrobce|''ABC'' | |Číslo výrobce|''0'' | |Poznámka|prázdná hodnota| Checkbox **není zaškrtnutý**. Výsledek: ^Atribut^Výsledná hodnota| |Výrobce|ABC| |Číslo výrobce|12345| |Poznámka|Kontrola provedena| Hodnota výrobce se přepíše, protože obsahuje hodnotu ''ABC''. Číslo výrobce zůstane ''12345'', protože zadaná hodnota ''0'' je při tomto nastavení ignorována. Poznámka zůstane ''Kontrola provedena'', protože prázdná hodnota nepřepisuje již existující hodnotu. ---- ====== 8. Checkbox je zaškrtnutý ====== Pokud uživatel zaškrtne **„Vynulovat nevyplněné atributy“**, systém nebude prázdné a nulové hodnoty ignorovat. Hodnoty zadané ve zdrojovém objektu se zapíší do cílového záznamu včetně hodnot reprezentujících prázdný nebo nulový údaj. ==== Příklad ==== Výchozí stav záznamu: ^Atribut^Původní hodnota| |Výrobce|ACME| |Číslo výrobce|12345| |Poznámka|Kontrola provedena| Uživatel zadá: ^Atribut^Nová hodnota| |Výrobce|ABC| |Číslo výrobce|0| |Poznámka|prázdná hodnota| Checkbox je **zaškrtnutý**. Výsledek: ^Atribut^Výsledná hodnota| |Výrobce|ABC| |Číslo výrobce|0| |Poznámka|prázdná hodnota| V tomto režimu tedy může funkce sloužit také k **vynulování nebo vyprázdnění již existujících hodnot**. ---- ====== 9. Atributy, které nejsou v pohledu ====== Funkce zpracovává pouze atributy, které jsou součástí aktuálního pohledu a které systém rozpozná jako podporované atributy. Atributy, které v pohledu nejsou, nejsou funkcí měněny. ==== Příklad ==== Záznam obsahuje: ^Atribut^Původní hodnota| |Výrobce|ACME| |Číslo výrobce|12345| |Poznámka|Kontrola| |Revize|5| V pohledu jsou pouze: * Výrobce, * Číslo výrobce, * Poznámka. Atribut **Revize** se do zpracování nezařadí a jeho hodnota ''5'' zůstane beze změny. ---- ====== 10. Hromadné zpracování ====== Pokud uživatel vybere více než jeden záznam, systém před zahájením samotného zpracování zobrazí potvrzovací dialog. Dialog informuje uživatele o počtu záznamů, které budou změněny. ==== Příklad ==== Uživatel vybere 35 záznamů. Po potvrzení dialogu s údaji se zobrazí upozornění:
Bude změněno 35 záznamů. Chcete pokračovat?Pokud uživatel změnu nepotvrdí, žádný záznam se nezmění. Pokud změnu potvrdí, systém začne postupně zpracovávat všech 35 vybraných záznamů. U jediného vybraného záznamu se tento potvrzovací dialog nezobrazuje. ---- ====== 11. Příklad kompletního použití ====== Uživatel chce u 100 kusů zásoby nastavit výrobce a případně odstranit starou hodnotu čísla výrobce. V pohledu má k dispozici: * Výrobce, * Číslo výrobce, * Poznámku, * checkbox „Vynulovat nevyplněné atributy“. ==== Varianta A – checkbox není zaškrtnutý ==== Uživatel zadá: * Výrobce = ''ACME'', * Číslo výrobce = ''0'', * Poznámka = prázdná hodnota. Výsledek: * Výrobce se nastaví na ''ACME'', * Číslo výrobce se nezmění, * Poznámka se nezmění. Tento režim je vhodný v případě, kdy chce uživatel **změnit pouze vyplněné hodnoty a ostatní existující údaje zachovat**. ==== Varianta B – checkbox je zaškrtnutý ==== Uživatel zadá stejné hodnoty: * Výrobce = ''ACME'', * Číslo výrobce = ''123'', * Poznámka = "Poznámka 1" Výsledek: * Výrobce se nastaví na ''ACME'', * Číslo výrobce se nastaví na ''0'', * Poznámka se vyprázdní. Tento režim umožňuje kromě doplnění hodnot také **vynulovat nebo vyprázdnit stávající hodnoty**. ---- ====== 12. Chybové stavy ====== Pokud během zpracování dojde k chybě při nalezení nebo použití odpovídajícího atributu, je zpracování ukončeno a chyba je předána zpět do GUI. GUI následně zobrazí chybové hlášení uživateli. Mezi možné technické příčiny patří například: * neexistující getter pro požadovaný atribut, * neexistující setter, * nekompatibilní typ hodnoty, * chyba při práci s atributem, * jiná chyba vzniklá při dynamickém zpracování atributů. ---- ====== 13. Shrnutí pravidel ====== ^Situace^Chování| |Není vybrán žádný záznam|Funkce se nespustí a zobrazí chybu| |Je vybrán 1 záznam|Zobrazí se dialog pro zadání hodnot| |Je vybráno více záznamů|Po zadání hodnot se zobrazí potvrzení hromadné změny| |Checkbox není zaškrtnutý|Nulové a prázdné hodnoty se u podporovaných typů nepřenášejí| |Checkbox je zaškrtnutý|Nulové a prázdné hodnoty se přenášejí| |Atribut není v pohledu|Atribut se nemění| |Atribut ''dotahovanaData'' |Atribut je ze zpracování vyloučen| |Starší záznam nemá ''CDodatecneUdaje'' |Objekt je automaticky vytvořen| |Checkbox typu Boolean = ''false'' |Hodnota se zapíše i při nezaškrtnutém „Vynulovat nevyplněné atributy“| |Dialog není potvrzen|Zpracování se neprovede| |Hromadná změna není potvrzena|Zpracování se neprovede|