REVERSE INHERIT
Základní popis funkce modulu a parametrů
Modul se zaktivuje načtením systémového příkazu C0061. Po zaktivování musí operátor načíst SN dílu, který chce převést do scrapu případně zpětně podědit (rozdělení, kdy dojde k zpětnému dědění a kdy pouze k převedení bude vysvětleno v další kapitole). Dále podle nastavení modulu (parametry MustSelectFail a MustSelectPosition) musí případně načíst chybu a její pozici. Po načtení všech potřebných informací dojde ke kontrole daného dílu a převedení do scrapu nebo ke zpětnému dědění. Pozn. - po uživatelské stránce se jedná o stejnou logiku jako u modulu MOVE_TO_REWORK. Po implementátorské stránce je rozdíl pouze v parametru OnReverseGS (hodnota statusu GS po použítí příkazu pro zpětné dědění)
Jádrová část
Jedná se o upravenou logiku modulu MoveToRework.cs. V modulu je nadefinovaný enum InputWaitState (NotActive, Part, Fail, Position a Save). Podle aktuální hodnoty InputWaitState se rozhoduje v HandlePortData, jaké HandlePortData se použije (HandlePortData_Part/Fail/Position). Hodnota InputWaitState m_state se nastavuje metodou GetNextState(SGLMState s, InputWaitState ws). Když je ve stavu Save, tak se volá metoda MovePart, kde je hlavní rozdíl modulů ReverseInherit a MoveToRework.
MovePart
Provede se kontrola, zda byla zadána nějaká chyba k dílu a zda byl načtený díl. Provede se kontrolní metoda ReverseInheritRoutingCheck() a na základě výsledku této metody se provede provede buďto zpětné dědění (procedura x_process_reverseInherit) nebo standardní MoveToRework.
ReverseInheritRoutingCheck()
Natáhne se XPQuery
Databázová SQL část
ReverseInheritPart(long partID, long detailID, int SS, long routingItemID) - v SQL ulozena procedura x_process_reverseInherit
Vytvoří se nová tabulka @parentParts, do které se nasypou data z načteného dílu (teď už vystupuje jako PARENT a ne jako CHILD). Založí se nový part "poděděný" od načteného dílu (pozn. Routing, RoutingItemID atd se doplňuje podle IsJobProcessUsed). Pokud se jedná o panel, tak se podědí také všechny díly na panelu. TODO! - popsat Pavlovu magii - zrušení čárových kódů a pripojenych dilu na "revertovany" dil. V cursoru CR_ReverseInherit se nastartují (x_process_start) všechny připojené díly k dílu, který chceme zpětně podědit. Od původního dílu se natáhnou přiřazené chyby (z tabulky Part_Divergence) a tyto připojené díly se následně ukončí (x_process_start). Po ukončení těchto dílů se zavolá procedura sg_Part_UnjoinItems, která tyto díly odpojí. Nastartují a ukončí se nové díly (opět x_process_start/x_process_end)