Díky za život nábojnice, pro přebíjení je to hodně důležité.
Akorát se mi bohužel nedaří vymyslet např. možnost rozvážit (už přeformátované a pokrácené) nábojnice do více skupin, ani zaznamenat, zda (a jak) se náboj krimpuje, apod. O sledování počtu vystřelení/přebití nemluvě.
Proto bych rád zkusil navrhnout malinko jiný přístup, který by, myslím, mohl řešit vše, a to za cenu docela malých úprav.
~~~
Každý krok úpravy nábojnice by byl representovaný novým záznamem nábojnice. Ten by obsahoval odkaz na původní a informaci, jak vznikl. Jinak by fungoval přesně stejně, jak záznamy fungují nyní; skoro nikde jinde by se skoro nic nemuselo měnit, a risiko nějakých problémů se starším kódem by bylo prakticky nulové. Viz prosím také níže „Vlastně z hlediska toho, jak se v aplikaci pracuje s nábojnicemi...“, jenž to ilustruje na příkladu.
V DB by stačilo přidat do „nábojnice“ tři nové položky:
  • odkaz na rodičovský záznam
  • název operace, jež tuto nábojnici vytvořila
  • booleovský atribut „konečná“ (obešli bychom se bez něj, pokud by se udělalo vyřazování jako samostatná možnost — což mi přijde implementačně spíš složitější, nicméně to samozřejmě záleží na Tobě :))
~~~
V GUI by bylo úprav jen pár:
  • v dlažidici by se vedle „Nákup“ objevilo „Upravit“, což by otevřelo dialog podobný vytvoření nové, ale jednodušší; v něm by byl jen:
- popup „Operace“ s možností vybírat existující a přidávat nové, podobně jako třeba u Aktivit; jedna předdefinovaná by byla „Vyřadit“
- položky „Obrázek“ (výchozí jako v rodiči), „Váha“ (výchozí jako v rodiči), „Aktuálně skladem“ (výchozí 0, maximum počet kusů v rodiči), „Hlídat pod“ (výchozí jako v rodiči) a „Poznámka“ (výchozí prázdná)
Pokud uživatel dá „Vytvořit položku“, pak aplikace
  • vytvoří nový záznam (stejně jako po „+ Přidat nábojnice“)
  • do odkazu na rodičovskou tam vyplní tu, v níž se kleplo na „Upravit“
  • položky z dialogu zapíše, jak jsou zadané
  • jinak vše z rodičovské čistě jen překopíruje
  • a ještě z rodičovské odečte počet kusů („Aktuálně skladem“) té nové.
Při operaci „Vyřadit“ se navíc nastaví „konečná“, ale pořád uživatel může přidat poznámku nebo fotku, bude-li chtít.
Tyto záznamy odvozených nábojnic by fungovaly přesně stejně, jako ty stávající, a to všude (např. by kterýkoli z nich šel vybrat pro přebíjení/vývoj navážky, byly by nad nimi normální statistky, atd.)
Jediná výjimka by byl záznam „konečná“; ten by neměl možnost „Upravit“, ani by nešel vybrat pro přebíjení. Jeho účelem je co nejjednodušší možnost vyřazení vadných kusů s možností přidat poznámku/fotku. Pokud by ses rozhodl to udělat jako samostatnou nezávislou službu, pak tento atribut samozřejmě nepotřebujeme, a dále by se to zjednodušilo (ale zase za cenu implementace toho samotného vyřazování, což myslím asi by bylo pracnější).
Čistě jen pro pohodlí bych přidal ve skladu pár kosmetických drobností:
  • možnost zobrazit jen kořenové nábojnice, asi ideální jako výchozí zobrazení;
  • možnost zobrazit pouze všechny odvozené z jednoho vybraného kořene.
Ještě by to chtělo
  • v dlaždici odvozené nábojnice zobrazovat „<název kořenové>: <operace>: <poznámka>“
  • odvozené nábojnice by vůbec neměly „Nákup“
  • v detailu tam, kde je nyní přehled nákupů, by měly zobrazenou cestu od kořene s vypsanými operacemi a poznámkami.
~~~
Konkrétní příklad, dejme tomu, že mám ve skladu jen jeden záznam nábojnice „Lapua“, 1000 ks.
Dám v něm „Upravit“, operace „Vážení“, počet 300, váha 156 gr
Pak v něm dám „Upravit“, operace „Vyřadit“, počet 5, poznámka „Hned při nákupu zdeformované!“ a fotku těch deformit
Znovu v něm dám „Upravit“, operace „Vážení“, počet 200, váha 158 gr.
V tuto chvíli bych měl ve skladu čtyři záznamy:
  • „Lapua“, 495 ks
  • „Lapua: Vážení: 156 gr“, 300 ks
  • „Lapua: konečná: Hned při nákupu zdeformované“, 5 ks
  • „Lapua: Vážení: 158 gr“, 200 ks
V posledním z nich dám „Upravit“, operace „Krácení“, počet 50, poznámka „44.65 mm“
Teď mám záznamů pět, s tím, že
  • ten „Lapua: Vážení: 158 gr“ už má jen 150 ks
  • a objevil se nový „Lapua: Krácení: 44.65 mm“, 50 ks
Zase v tom novém dám „Upravit“, operace „Formování krčku“, počet 10, poznámka „bushing .246“ — opět mi to přidá nový záznam (a „Lapua: Krácení: 44.65 mm“ už bude mít jen 40).
Když si teď otevřu ten nejnovější záznam „Lapua: Formování krčku: bushing .246“ v Detailu, tak tam, kde současné nábojnice mají seznam nákupů (a ty kořenové bez předka by jej měly i nadále), on bude mít tabulku nadřízených až ke kořeni, tedy v tuto chvíli tři řádky, od nejstaršího:
  • datum/čas: Lapua
  • datum/čas: Vážení: 158 gr
  • datum/čas: Krácení: 44.65 mm.
Kterýkoli ze všech pěti záznamů (jen vyjma toho „konečná“) je úplně normální záznam nábojnic; mohu každý z nich vybrat pro přebíjení stejně dobře, jako kterýkoli jiný, normálně upravovat, jsou ve statistikách, atd. Ty novinky tedy (vyjma „konečné“) vůbec nikde jinde nic nijak v celé aplikaci neovlivní a vše funguje stejně jako dosud.
~~~
Vlastně z hlediska toho, jak se v aplikaci pracuje s nábojnicemi (jen vyjma „konečné“) by se to technicky nijak nelišilo od případu, kdy by se v současné versi neměnilo nic, a já bych ty nové záznamy přidával ručně a vše (včetně operace) bych psal do poznámky.
Tedy např. namísto „dám „Upravit“, operace „Vážení“, počet 300, váha 156 gr“ bych
  • ručně přidal novou nábojnici přes „+ Přidat nábojnice“
  • ručně do ní překopíroval všechny atributy z původní Lapua
  • dal jí počet 300 a v původní nábojnici počet adekvátně ručně snížil
  • nastavil bych v ní váhu 156 gr
  • a do poznámky bych napsal: „upraveno z Lapua, vážením“.
Tak bych to mohl dělal už teď a fungovalo by to provozně skoro stejně. Ovšem aplikace by těmi výše popsanými jednoduchými mechanismy mohla tuhle práci zásadně usnadnit a umožnila by také mnohem snáze si ve výsledcích udržovat přehled. Ale funkčně by se to nijak nelišilo :)
~~~
Přebité náboje by získaly také tlačítko „Upravit“ s velmi podobnou funkčností.
Dejme tomu, že přebiji 5 ks s nábojnicí „Lapua: Formování krčku: bushing .246“, takže mám odpovídající náboj; v něm je odkaz na tu nábojnici, jejíž skladový počet se přebitím snížil na 5 (to vše jsou stávající nezměněné funkčnosti).
Novinka (skoro totožná s úpravami nábojnic popsanými výše) by byla možnost klepnout na „Upravit“. Opět by se otevřel týž jednoduchý dialog, jen jeho Operace by měly vlastní nezávislý seznam možností (opět s možností vybrat z popupu nebo přidat novou), tentokrát namísto „Vyřazení“ by tam standardně byla „Delaborace“.
Zadám tedy např. operaci „Krimpování“, počet 3, poznámku „roll crimp“. A aplikace by pak za mne udělala dvě věci zároveň:
  • vytvořila by nový záznam nábojnice „Lapua: Krimpování: roll crimp“, počet 0 (protože je použita v nábojích), rodič „Lapua: Formování krčku: bushing .246“
  • a vytvoří i nový záznam náboje, 3 ks, s touto novou nábojnicí.
Ta „delaborace“ by se lišila jen ve dvou drobných detailech:
  • nevytvoří nový záznam náboje, jen (přesně stejně jako výše) nábojnice;
  • a střelu vrátí do skladu.
Podstatné je, že pořád všechny objekty fungují stejně jako dosud, nemá to vliv na nic jiného nikde jinde v aplikaci — kterýkoli z těchto nábojů mohu stejně dobře upravovat, střílet, testovat, znovu přebíjet (navýším-li počet nábojnic), cokoli.
~~~
Hlavní (ale velmi jednoduchá :)) novinka by pak byla při návratu ze střelnice, kde by mezi „vystříleno“ a „vrátit do trezoru“ přibyl (jen pro ty, kdo přebíjejí) nový sloupec „vrácené nábojnice“. V něm číslo od 0 do „vystříleno“, výchozí stejně jako vystříleno.
Pokud v něm bude >0, pak se zároveň s návratem vytvoří další záznam nábojnice, přesně stejným postupem jako když u záznamu vybírám „Upravit“. Operace se vyplní na „Vystříleno“, rodičem bude nábojnice, jež byla použita v daném náboji. Nic víc.
(No, mohl by tam být ještě odkaz do deníku na konkrétní záznam toho střílení; to by bylo šikovné, pokud by to nebylo moc pracné. Ale smysl by to mělo i bez toho.)
~~~
A to je vlastně celé — pokud něco zásadního nepřehlížím, mělo by to snad být plně funkční, velmi pohodlné provozně, a naprosto flexibilní pro nejrůznější potřeby uživatelů.
Chci vidět, kolikrát byla nábojnice vystřelená? Otevru si její Detail a podívám se, kolikrát v seznamu nadřízených má operaci „Vystříleno“. A kromě toho tam také vidím vše ostatní: kolikrát (pokud vůbec) byla žíhaná, kolikrát a jak byla formátovaná, atd. atd. atd.
Někdo si nechce zaznamenávat úpravy nábojů a vést jen jednoduché jednorázové „Přebití“, jako je tomu nyní? Není to žádný problém a nic se mu tím nijak nezkomplikuje; prostě jen v náboji nepoužije jeho tlačítko „Upravit“. Atd.
(Tedy — ony se určitě při případné implementaci objeví nějaké další potřebné úpravy a vylepšení a problémy k řešení; ale troufnu si tvrdit, že by neměly být ani zásadní, ani rozsáhlé.)
Hmmm... co Ty na to?