1.3.4. Odklonění funkcionality do jiného SRV v závislosti na Repository
Řešil jsem případ, že jsem měl funkci Změna datumu dokladu (c.f. 964, akce = 'zmena_datum' ) nad třídou Výdejky (211). Tato funkce měla na jedné zakázkace s Quort výrobou (TatraSvit) změněný SRV objekt ze standardního sk_fnc_doklady_funkce_srv na q_sk_fnc_doklady_funkce_srv. Toto však neplatilo pro jiné zakázky s Quort výrobou a současně neplatilo pro všechna použití původního srv objektu (např. mám stejnou fci pro příjemku a na zakázce TatraSvit měla původní SRV).
Požadavky na řešení:
1. Zachovat stejnou akci 'zmena_datumu'. Důvod: spousteni z jinych funkci.
2. Nepřenášet funkcionalitu z q_sk_fnc_doklady_funkce_srv do sk_fnc_doklady_funkce_srv. Důvod: Funkcionalita výroby by měla být v nadstavbové knihovně a nemělo by se zásadně zasahovat do kódu (kvůli převodu).
3. Ponechat možnost spouštět funkci na zakázce s Quort výrobou s původním SRV objektem. Důvod: Přidaná funkcionalita není potřeba nebo může uškodit, opět by se nemělo zásadně zasahovat do kódu (kvůli převodu).
4. Nutno se orientovat dle údajů v Repository - ať již u funkce, nebo přes featury či jinak.
5. Nemělo by záležet na vzájmeném pořadí knihoven Warehouse a Quort_Ext. Důvod: oboje jsou to naše "kmenové" knihovny a bylo by težké to uhlídat.
Řešení:
Zavedli jsme nový parametr do atributu Funject s pojmenováním: UseIfRepositoryMatchSrv. Pokud je v tomto atributu uveden u SRV objektu a shoduje se s udajem v Repository u funjectu, tak tento SRV dostane pri tvorbě přednost před obecným SRV objektem.
[Funject(211, "zmena_datum", true, UseIfRepositoryMatchSrv = "q_sk_fnc_doklady_funkce_srv")]
public class q_sk_fnc_doklady_funkce_srv : sk_fnc_doklady_funkce_srv
{ ... }
Příklady:
Zakazka obecna bez vyroby (NorisNext2)
c.f. c.t. srv
963 210 uo_sk_fnc_doklady_funkce_srv
964 211 uo_sk_fnc_doklady_funkce_srv
Zakazka s vyrobou s puvodnim SRV (DPS)
c.f. c.t. srv
963 210 uo_sk_fnc_doklady_funkce_srv
964 211 uo_sk_fnc_doklady_funkce_srv
Zakazka s vyrobou se zmenenym SRV (TatraSvit)
c.f. c.t. srv
963 210 uo_sk_fnc_doklady_funkce_srv
964 211 uo_q_sk_fnc_doklady_funkce_srv