SCM - obecně
Obsah kapitoly:

SCM = Supply Chain Management. SCM je proces plánovania, implementácie a kontroly dodávateľského reťazca s cieľom čo najefektívnejšie naplniť požiadavky zákazníkov. SCM zahŕňa kompletné skladovanie a presuny materiálov, produktov nedokončenej výroby a výrobkov z miesta pôvodu do miesta spotreby.
Modul SCM v systéme predstavuje súbor nástrojov a procesov na optimalizáciu riadenia tohto dodávateľského reťazca s ohľadom na koncového zákazníka, teda nástrojov na analýzu dodávateľského reťazca (rozbor budúcich požiadaviek a sledovanie ich pokrytia) a na zabezpečovanie dodávok (zabezpečovanie zdrojov pre tieto požiadavky).
Pojmom Zdroje myslíme doklady príp. iné záznamy, ktoré dokážu zabezpečiť prírastok položiek reprezentovaných skladovými kartami. Napr.: Objednávky vydané, Požadavky na objednávky vydané, Stav skladu,Požadavky na výrobu (vyrobení výrobku), Výrobní příkazy (vyrobení výrobku),Kompletační listy (vyrobení výrobku), Výrobní listy Gastro výroby.
Pojmom Požiadavky myslíme doklady, ktoré naopak skladové položky požadujú / spotrebovávajú. Např. Objednávky přijaté, Spodní limity na skladových kartách,Požadavky na výrobu (požadavek na materiál), Výrobní příkazy (požadavek na materiál),Kompletační listy (materiál), Výrobní listy (materiál). Pri sledovaní budúcich požiadaviek na sklad. položku a jej pokrytia môže nastať stav, že teraz alebo niekedy v budúcnosti dôjde k zápornému stavu na sklade. Tento stav môže ohroziť plynulosť dodávok tovarov alebo výrobkov zákazníkom a budeme ho označovať pojmom Kríza. Ak je záporný stav len dočasný a z existujúcich dokladov už v daný okamih plynie, že budúce požiadavky budú následne pokryté, potom budeme tento stav označovať ako Dočasná kríza.
Kľúčovými agendami, v ktorých užívateľ získava potrebné informácie na základe dát z dátových zdrojov, sú Bilancia, Vývoj, Pokrytie dokladu. V ďalšom texte ich budeme označovať tiež ako Funkčné agendy SCM.

Zásobovač v obchodnej firme má za úlohu pravidelne, kontinuálne a včas zabezpečovať dodávku tovaru. Rieši pritom otázky: Čo nakúpiť, kedy to nakúpiť, koľko a od koho. Určite nie je nutné, aby ručne prechádzal jednotlivé objednávky prijaté, ich riadky triedil podľa dodávateľov a pre každého vytváral objednávku vydanú. Takýto spôsob by bol značne neefektívny. Môže na to využiť Sprievodcu tvorbou požiadaviek na OV. Pomocou neho je možné kumulovať požiadavky na OV a tvoriť výsledné OV za viacero OP kumulovane. Je tiež možné zobrať do úvahy už objednané množstvo na OV, je možné zohľadniť výber dodávateľa podľa rôznych kritérií a pod. V praxi však možností, ako zabezpečiť tovar, môže byť viac. Nemusí sa napr. iba objednávať, niekedy ho len stačí previesť z iného skladu. Tiež si ho je možné na určitú OP "požičať" z inej nevybavenej OP, ktorá má neskorší termín dodania alebo ju nie je možné vybaviť, pretože na ňu chýba i iný tovar. Na to je však potrebné mať včasné a presné informácie, ktoré nie sú a ani nemôžu byť v sprievodcovi tvorbou požiadaviek na OV k dispozícii. Rovnako sa ani nekontroluje, kedy bude tovar na objednávke zabezpečený a teda, či bude dodaný včas. Ak takéto informácie chce mať k dispozícii, využije modul SCM.
Užívateľ si spustí agendu Bilancia skladových položiek a na záložke Obmedzenie vyberie definíciu stĺpcov, ktorá určí, aké informácie sa mu budú v bilancii zobrazovať. Poté si v omezení vybere skladové karty, které ho zajímají, a vyvolá funkci Získat záznamy bez vyprázdnění vyrov. paměti.
Na záložke Zoznam uvidí pre vybrané skladové karty informácie o požiadavkách (napr. objednávkach prijatých) a zdrojoch (napr. objednávkach vydaných), ktoré sa vybraných kariet týkajú. V stĺpci Zabezpečiť sa mu predvyplní množstvo skladových položiek, ktoré je potrebné zabezpečiť, a záznamy položiek, u ktorých nastala kríza, sa podfarbia červenou. Užívateľ si môže v zozname nechať zobraziť len záznamy s krízami.
Označí si položky, ktoré si praje zaistiť, a spustí Sprievodcu zaistením zdrojov. V sprievodcovi sa mu zobrazí zoznam položiek. V tomto zozname sú pri každej položke informácie o tom, akým dokladom sa má položka zabezpečiť, v akom rade sa má doklad vytvoriť a pod. Tieto údaje môže užívateľ vyplniť ručne, alebo môže využiť pravidlá pre predvyplnenie, ktoré umožnia túto úlohu automatizovať. Následne spustí generovanie dokladov a po jeho dokončení si môže prehliadnuť zoznam vytvorených dokladov. Pre každý doklad môže otvoriť agendu a detailne si ho prehliadnuť.

Užívateľ zistí v agende Bilancia, že pre konkrétnu položku je indikovaná kríza – je vyplnený stĺpec Dátum krízy a Doklad krízy a celý riadok je podfarbený červenou. Užívateľ potrebuje vedieť bližšie informácie a nad týmto záznamom preto vyvolá agendu Vývoj skladovej položky. V tejto agende sa mu zobrazí prehľad budúcich pohybov, pri každom pohybe je vidieť priebežný stav položky. Na základe týchto informácií sa môže rozhodnúť, ako kritické miesto vyrieši – pokiaľ je napr. kríza len jeden deň (dočasná kríza), nebude potrebná žiadna akcia, naopak pokiaľ bude kríza trvať dlhšie a hrozilo by oneskorenie zákazky, bude musieť krízu riešiť.
Záznamy v agende Bilancia si je možné zafiltrovať len za krízy resp. dočasné krízy.

Užívateľ si pridá do agendy objednávok prijatých definovateľný stĺpec typu Objekt. Vo výraze pre tento stĺpec použije QuickReports funkciu SCMDocumentCoverage, ktorá vráti mieru pokrytia dokladu v percentách. Napr. SCMDocumentCoverage ('Obchod', 'RO', ID, True, False). Prípadne si môže nastaviť i stĺpec, aby zobrazoval percentuálnu hodnotu graficky v podobe stĺpcového grafu (výraz potom vydeliť ešte stomi SCMDocumentCoverage ('Obchod', 'RO', ID, True, False)/100). Viď tiež editor stĺpcov - spôsob zobrazenia - percentuálny stĺpec.
Keď mu potom zavolá zákazník a chce vedieť, ako to vyzerá s jeho objednávkou, užívateľ má okamžite vizuálny prehľad.
Príklad využitia funkcií SCM na rýchle orientačné zobrazenie pokrytia objednávok
Pomocou 4. a 5. parametra je možné nastaviť, ako sa percento pokrytia má vyčísľovať: 4. parameter - či sa percento pokrytia bude zobrazovať za zadaný sklad či za všetky sklady, 5. parameter - či sa percento pokrytia bude vyčísľovať z počtu úplne pokrytých riadkov vzhľadom k celkovému počtu riadkov alebo priemerom z pokrytia jednotlivých riadkov (teda podľa vzorca 1/n*x1/y1+1/n*x2/y2, kde n je počet riadkov, y je požadovaný počet v danom riadku, x je počet, ktorý je pokrytý.

Viď tiež kap. Často kladené otázky k SCM - otázka Ako si rýchlo zobraziť pokrytie viacerých dokladov naraz?.

Zobrazované pokrytie dokladu je relevantné jedine vtedy, ak zobrazovaný doklad spĺňa podmienky pre načítanie do vyrovnávacej pamäti a je v nej načítaný! (Viď ďalej Poskytovateľ dát.) Napr. ak dátový zdroj je definovaný tak, že načíta len potvrdené OP, nemá zmysel si zobrazovať pokrytie pri nepotvrdenej OP (zobrazená hodnota je irelevantná). Rovnako, ak ste v zobrazovanom zozname zadali nový doklad, je potrebné vykonať vyprázdnenie a nové načítanie vyrovnávacej pamäte (viď možnosti načítania vyrovnávacej pamäte), aby sa nový doklad do nej načítal a zobrazovaná hodnota pokrytia bola správna.

Majme objednávku prijatú (OP), na nej dva riadky na sklad 01:
- r.1: karta K1 na 1ks ... (na sklade je viac ako 1 ks ⇒ tzn. riadok je 100%-ne pokrytý
- r.2: karta K2 na 3ks ... (na sklade 1 je 1ks, na sklade 2 v počte 2ks ⇒ tzn. za sklad 1 je pokryté 33%-ne, za všetky sklady pokryté 100%-ne).
Ak je stĺpec definovaný ako SCMDocumentCoverage('Obchod', 'RO', ID, False, False)/100), bude pokrytie 50% (pokrytý je len 1 riadok z dvoch), ak je SCMDocumentCoverage('Obchod', 'RO', ID, False, True)/100), tak bude pokrytie (=1/2*1/3+1/2*1/1).

V příkladu č.3 jsme si ukázali funkci na zjištění pokrytí celého dokladu. Nyní si v příkladu ukážeme funkci na pokrytí konkrétních řádků dokladu. Opět využijeme QuickReports funkce, tentokrát s názvem SCMDocumentRowCoverage, která vrátí pokrytí řádků dané skladové karty požadovaného dokladu v procentech. Funkci lze využit například v definovatelném panelu na obsahu dokladu, kde ukáže pokrytí řádku na kterém je fokus.
Napr.: SCMDocumentRowCoverage('Obchod', 'RO', Parent_ID.ID, StoreCard_ID, false).
Funkce zobrazuje stejné výsledky (jen bez použitého zaokrouhlení) jako funkce přes tlačítko SCM, Pokrytí dokladu.
Před použitím funkce je nutné spustit nad libovolným dokladem funkci Pokrytí dokladu přes tlačítko SCM s použitím funkce Získat záznamy s vyprázdněním vyrov. paměti. Tím dojde k občerstvení a načtení dat.

Jedná se o využití doplňku SCM - Vývoj. Viď kap. Často kladené otázky k SCM - otázka Ako si zobraziť vývoj SCM automaticky i v iných agendách?.

Užívateľ si otvorí agendu objednávok prijatých a označí si doklady, pre ktoré chce zabezpečiť tovar. Potom spustí sprievodcu zaistením zdrojov, v ktorom budú zobrazené skladové položky z vybraných objednávok. Užívateľ si vyberie pravidlo pre zaistenie, ktoré používa na vytváranie objednávok vydaných, a spustí predvyplnenie. Pri všetkých položkách sa mu nastaví ako typ dokladu objednávka vydaná a podľa nastavenia pravidiel sa mu vyplnia ostatné položky.
Užívateľ prejde na ďalší krok sprievodcu a tým spustí generovanie dokladov, ktorých zoznam sa mu následne zobrazí. Pre ľubovoľný doklad alebo pre všetky doklady súčasne si môže otvoriť agendu objednávok vydaných.

Z vyššie uvedeného vyplýva, že modul má využitie nielen vo výrobných firmách (kde je v zásade nutnosťou), ale i vo firmách obchodných.
Aby agendy Bilancia, Vývoj, Pokrytie dokladu poskytli požadované informácie, je po ich spustení najskôr potrebné určiť, aké informácie si práve želáme zobraziť a z akých dát sa majú načerpať. (Nie vždy a nie každý chce vidieť dáta rovnakým spôsobom. Niekedy potrebujeme dáta len z jedného strediska, inokedy chceme mať kompletný prehľad. Iné dáta potrebuje zásobovač, iné obchodník atď.). To sa deje zvolením požadovanej definície v danej agende (definície sady dátových zdrojov alebo definície stĺpcov bilancie, viď ďalej), ktorá toto špecifikuje.
Dátového zdroja - Všetky dáta pre SCM sa získavajú prostredníctvom definovaných SQL dopytov a ukladajú sa do tzv. vyrovnávacej pamäte a až odtiaľ sa čerpajú do agend SCM, reportov či OLE (z dôvodu rýchlosti nie sú priebežne čerpané priamo z databázy). (To zabezpečuje tzv. poskytovateľ dát, viď ďalej, deje sa to však interne a užívateľ sa tým nemusí nijako zaoberať). Tieto SQL dopyty sa definujú v rámci Dátového zdroja v číselníku Dátové zdroje. Dátový zdroj teda obsahuje SQL dopyt, ktorý sa použije na získanie dát, a zoznam výstupných položiek, ktoré má vracať. SQL dopyt je definovaný napevno, nedopĺňajú sa do neho dynamicky obmedzenia a pod. (ako je to napr. v prípade dynamických zdrojov dát (DynSQLs)). Existujú rôzne Druhy dátových zdrojov. Každý druh je primárne určený pre niečo iné. Je možné si nielen definovať vlastné zdroje vracajúce informácie o pohyboch z dokladov, o stavoch skladov a pod., ale aj si definovať vlastné zdroje pre zoznam skladových kariet a pre zoznam skladov (viď tiež pevné stĺpce Bilancie) a stĺpce z týchto zdrojov následne použiť v obmedzení v agendách SCM. Viď Druhy dátových zdrojov. (Zostavovanie obmedzujúcich prvkov v Obmedzení viď kap. Záložka funkčných agend SCM.) Každý dátový zdroj musí niektoré položky obsahovať povinne. (Viď tiež Povinné výstupné položky, Podmienky pre SQL dopyt.)

Môžeme mať dátový zdroj "OP", ktorý bude nadefinovaný nasledovne: Bude načítavať dáta z objednávok prijatých, ktoré sú vystavené s určitým dátumom dodania, sú potvrdené, nie sú uzavreté a na ich skladových riadkoch ešte zostáva nejaký nedodaný tovar. Z týchto objednávok bude vracať položky odkaz na skladovú kartu (ako položku StoreCard_ID), sklad (ako položku Store_ID), firmu (ako položku Firm_ID), zákazku, rad dokladov, množstvo (ako položku Quantity) a pod. Rovnako môžeme mať nadefinovaný dátový zdroj "OV", ktorý bude načítavať za rovnakých podmienok dáta z objednávok vydaných. Okrem toho môžeme mať nadefinovaný iný dátový zdroj "OP2", ktorý bude načítavať dáta z všetkých objednávok prijatých bez ohľadu na stav potvrdenia (keďže ho napr. nepoužívame). Ďalej môžeme mať nadefinovaný dátový zdroj "Stav skladu", ktorý bude načítavať dáta z čiastkových skladových kariet a ktorý bude okrem odkazu na sklad. kartu a sklad vracať stav skladu a pod.
Definície stĺpcov bilancie - Jednotlivé dátové zdroje vstupujú do definícií stĺpcov bilancie. V agende Bilancia si je totiž možné do značnej miery definovať, aké stĺpce tu majú byť a čo majú zobrazovať. Je zde totiž několik typů sloupců a to jednak pevné sloupce bilance (např. kód a název skl. karty, kód a název skladu, výsledné množství bilance, ...), jednak definované sloupce bilance (definované právě na základě jedné z definic sloupců bilance) a dále filtrované sloupce bilance. Více viz Typy sloupců v Bilanci. Definícií stĺpcov bilancie opäť môže byť viac. Každá definícia stĺpcov bilancie sa jednak odkazuje na jedno z nastavení SCM, ktorých môže byť opäť viac a ktoré určuje jednak nastavenie zobrazenia bilancie (tzn. masky, farby v prípade kríz atď.) a ďalej určuje, aké dát. zdroje sa majú použiť pre získanie zoznamu skladových kariet a skladov (a naplnenie stĺpcov Kód a názov skl. karty atď. (jedny z pevných stĺpcov bilancie)). Viď tiež Druhy dátových zdrojov. Ďalej každá definícia stĺpcov bilancie obsahuje zoznam stĺpcov, ktoré má bilancia ďalej obsahovať (tzn. práve tie vyššie spomenuté definované stĺpce bilancie). Tieto definované stĺpce môžu byť buď dátové alebo počítané. Tzn. pri každom je uvedené, či má zobrazovať priamo niektorú z položiek z nejakého dátového zdroja a akú (typicky pôjde o položku nesúcu informáciu o množstve z daného zdroja dát (Quantity), ale z dát. zdroja je možné použiť i ľubovoľnú inú, ak má jej zobrazenie v bilancii pre vás zmysel), alebo či má byť stĺpec počítaný (napr. súčet dvoch iných stĺpcov). Viac viď stĺpce dátové a počítané. Pričom, ak ide o množstvo, je možné určiť, či má byť započítané do stĺpca s výsledkom bilancie (jeden z pevných stĺpcov bilancie)). V agende Bilancia potom užívateľ volí práve jednu z týchto definícií stĺpcov bilancie. Z toho vyplynie, podľa akých dátových zdrojov sa prostredníctvom poskytovateľa dát načítajú dáta pre následné zobrazenie a aké budú v Bilancii stĺpce. Rovnako z toho vyplynie, aké obmedzujúce prvky budú k dispozícii v záložke Obmedzenie bilancie. (Zostavovanie obmedzujúcich prvkov v Obmedzení viď kap. Vytvorenie zoznamu obmedzovacích prvkov.)

Definícia stĺpcov bilancie musí obsahovať aspoň jeden stĺpec dátový odkazujúci sa do nejakého dátového zdroja druhu "Dokladový" alebo "Stavový" (aby podľa neho bolo možné načítať údaje do pevne daných stĺpcov bilancie, tzn. skladové karty, sklady, ....). Výstupné položky StoreCard_ID a Store_ID obsahuje každý dátový zdroj, pozri povinné položky dátového zdroja.
Sady dátových zdrojov - Z jednotlivých dátových zdrojov je možné ďalej zostavovať sady dátových zdrojov v číselníku Sady dátových zdrojov. Sád dátových zdrojov môže byť viacero, a to preto, že nie vždy a nie každý chce vidieť dáta rovnakým spôsobom, ako bolo spomenuté vyššie. Každá sada dátových zdrojov sa jednak odkazuje na jedno z nastavení SCM, ktorých môže byť opäť viac a ktoré určuje jednak nastavenie zobrazenia bilancie (tzn. masky, farby v prípade kríz atď.), a ďalej určuje, aké dát. zdroje sa majú použiť pre získanie zoznamu skladových kariet a skladov. Viď tiež Druhy dátových zdrojov. Ďalej každá sada obsahuje výber dátových zdrojov, ktoré sa majú v danom okamihu použiť na načítanie dát pre SCM. Okrem toho umožňuje užívateľovi ku každému v nej obsiahnutému dátovému zdroju určiť obmedzenie pre načítané dáta napr. obmedzenie podľa skladových kariet, pokiaľ vie, že ho bude zaujímať len určitý sklad resp. že bude chcieť zásobovanie skladu vykonávať podľa jednotlivých sortimentov tovaru, nie pre celý sklad naraz. Ďalej si v sade dátových zdrojov je možné pre agendu Vývoj dodefinovať, aké ďalšie stĺpce tu majú byť a čo majú zobrazovať. Je tu totiž niekoľko typov stĺpcov (podobne ako v Bilancii, viď vyššie)), a to jednak pevné stĺpce vývoja (napr. kód a názov skladu, ...), jednak definované stĺpce vývoja (definované práve na základe jednej zo sád dátových zdrojov). Viac viď Typy stĺpcov vo Vývoji. V agendách Vývoj a Pokrytie dokladov potom užívateľ volí práve jednu z týchto sád. Z toho vyplynie, podľa akých dátových zdrojov sa prostredníctvom poskytovateľa dát načítajú dáta pre následné zobrazenie a aké budú vo Vývoji stĺpce. Rovnako z toho vyplynie, aké obmedzujúce prvky budú k dispozícii v záložke Obmedzenie agendy Vývoj resp. Pokrytie dokladu. (Zostavovanie obmedzujúcich prvkov v Obmedzení viď kap. Vytvorenie zoznamu obmedzovacích prvkov.) Sady majú použitie i v bilancii, viď ďalej.

Obmedzenie by mohol užívateľ zadať až vo funkčných agendách SCM, pokiaľ si ho však nadefinuje priamo v definícii sady, odozva bude rýchlejšia (do vyrovnávacej pamäte sa bude načítavať menej dát).

Majme nadefinovanú sadu "Obchod", ktorá obsahuje dátové zdroje z predchádzajúceho príkladu OP, OV, Stav skladu. Pokiaľ túto sadu použijeme v agende Vývoj, získame k jednotlivým skladovým kartám údaje, ktoré sú výsledkom vyhodnotenia dát načítaných z objednávok prijatých a vydaných, ktoré spĺňajú podmienky uvedené v predchádzajúcom príklade (tzn. z potvrdených, neuzavretých,...) a ďalej z informácií o stavoch skladov, načítané z čiastkových skladových kariet. Okrem toho ale môžeme mať napr. sadu "Obchod - len za pobočku", kde navyše v jednotlivých dátových zdrojoch zadáme obmedzenie len podľa skladov pobočky.

Definícia sady dátových zdrojov musí obsahovať aspoň jeden dátový zdroj druhu "Dokladový" (aby podľa neho bolo možné načítať údaje do pevne daných stĺpcov, tzn. sklady a i. ....) a nemala by obsahovať ostatné druhy. Výstupné položky StoreCard_ID a Store_ID obsahuje každý dátový zdroj, pozri povinné položky dátového zdroja.
Vyššie uvedené skutočnosti dokresľuje nasledujúci schematický obrázok:
Pre produkt ABRA Gen s jednoduchým účtovníctvom nie sú k dispozícii výrobné doklady VYP a POZ.
Pokiaľ sú stanovené dátové zdroje a z nich zostavené sady dátových zdrojov a definície stĺpcov bilancie, je možné začať používať agendy, ktoré zobrazujú dáta z týchto dát. zdrojov: Vývoj, Pokrytie dokladu a Bilanciu.
Agenda Vývoj položky nám prehľadne zobrazí očakávaný vývoj stavu karty.

Vývoj položky určitej skl. karty A môže byť napr. nasledujúci:
Dátum | Doklad | Sklad | Pohyb | Prieb. stav skladu |
---|---|---|---|---|
10.10. | Stav skladu | HL | +150 | +150 |
14.10. | OV-15 | HL | +20 | +170 |
18.10. | OP-21 | HL | -70 | +100 |
18.10. | OP-25 | HL | -120 | -20 |
Prvou položkou je aktuálny stav skladu a nasleduje zoznam dokladov s počtom na doklade a priebežným stavom skladu. Niektoré doklady priebežný stav zvyšujú (zdroje), iné znižujú (požiadavky). Pokiaľ sa v priebežnom stave niekde objaví záporné číslo, znamená to nepokrytý stav, ktorý vyžaduje zvláštnu pozornosť. Z pohľadu obchodníka vyjadruje riziko, že daná objednávka prijatá nebude včas vybavená. Z pohľadu zásobovača požiadavku na zabezpečenie.
Takýto prehľad je užitočný predovšetkým v kombinácii s tým, že ho je možné rýchlo spustiť z miesta, kde ho potrebujeme. Je si tak napr. na riadku OP možné rýchlo a jednoducho skontrolovať, či je tovar zabezpečený (na sklade alebo už objednaný). Pokiaľ by sme rovnakú informáciu chceli vedieť o celej objednávke, nie je potrebné postupne prechádzať jej riadky a robiť si vývoj každej položky zvlášť, ale je možné využiť agendu Pokrytie dokladov, ktorá si spraví vývoj pre všetky položky dokladu a zobrazí súhrnnú informáciu o percente zabezpečenia dokladu. Pre 100%-ne zabezpečené sklady potom má význam uskutočniť príslušnú následnú akciu, čo napr. pri objednávkách môže byť potvrdenie dátumu dodania odberateľovi, výrobné príkazy zabezpečené materiálom spustiť do výroby a pod.
Agenda Bilancia má význam predovšetkým pre zásobovača. Slúži na celkový pohľad na bilanciu vybraných skladových kariet. Bilancia je agenda, ktorá sa vzťahuje k viacerým skladovým kartám. Je ju teda možné vyvolať z agendy Skladové karty a Čiastkové skladové karty (tu sú informácie automaticky obmedzené podľa 1 skladu) a zobrazuje bilanciu pre označené karty. Ďalej ju je možné vyvolať z agend rôznych dokladov, pre ktoré má zmysel sledovať zabezpečenie sklad. položiek a to pre skladové karty z všetkých označených dokladov. Bilancia úzko spolupracuje s agendami Vývoj položky a Zaistenie zdrojov. Z Bilancie je teda možné vyvolať obe agendy a naopak z týchto agend vyvolať Bilanciu. Vývoj jej slúži na zobrazenie detailu o vybranej karte a Zabezpečenie je nástroj, ktorý zaistí chýbajúce množstvo tých položiek, ktoré Bilancia odhalila.

Bilancia môže byť napr. nasledujúca:
Skl. karta | Stav skladu | OP | OV | Limit | Celkom | Zabezpečiť | Kríza |
---|---|---|---|---|---|---|---|
A | +150 | -190 | +20 | -20 | +20 | Áno | |
B | +100 | -50 | +40 | -150 | -60 | +60 | Nie |
C | +130 | -60 | +30 | -50 | +50 | 0 | Nie |
D | +150 | -190 | +70 | +30 | +20 | Áno |
Každý riadok Bilancie prislúcha k jednej skladovej karte daného skladu. Sú na ňom zaznamenané informácie ako v agende Vývoj položky, ale v súhrnnej podobe. Význam informácií plynúcich z jednotlivých riadkov:
- Karta A: - 1. riadok zodpovedá príkladu uvedenému vyššie na Vývoj položky. Vidíme, že dve objednávky prijaté na 70 a 120 kusov sú zaznamenané súhrnne ako 190 kusov. Stav skladu ide pod nulu, nastal teda stav krízy.
- Karta B: - Na 2. riadku stav krízy nenastáva, no i tak je potrebné nejako zabezpečiť chýbajúce množstvo. Vidíme, že v bilancii sa môžu objaviť stĺpce, ktoré sa vo Vývoji neobjavujú. V tomto prípade ide o spodný limit skladu. Druhý riadok pre kartu B vyjadruje stav, keď v žiadnej chvíli tovar na sklade nechýba, ale dostávame sa pod spodný limit skladu, a preto je vhodné zabezpečiť chýbajúce množstvo 60 ks.
- Karta C: - 3. riadok vyjadruje stav, keď je všetko v poriadku a nič nie je potrebné zabezpečiť.
- Karta D: - 4. riadok by zodpovedal prvému riadku pre kartu A (príklad na Vývoj) v prípade, že by vo vývoji po 18.10. existovala OV na 50 kusov. Tým by sme sa celkovo dostali do kladného čísla na 30 ks. Napriek tomu by v určitej fáze vývoja po 18.10. išiel očakávaný stav skladu do mínusu. Došlo by ku kríze a tú je potrebné nejako riešiť. Riešenie závisí od užívateľa. Buď môže zabezpečiť objednávku aspoň 20 kusov, ktorá dorazí do 18.10. alebo dohodnúť, že OP-21 alebo OP-25 bude dodaná neskôr a to až po dodaní tovaru z OV na už spomenutých 50 ks.
Na samotné zaistenie zdrojov je určená agenda Sprievodca zaistením zdrojov. Je ju možné spúšťať samostatne alebo z iných agend (z dokladov požiadaviek (OP, POZ, ...), z agendy Bilancie, ...), ktoré jej odovzdávajú informácie o kartách, ktoré je potrebné zabezpečiť a o požadovanom množstve. V agende je potom možné ku každej karte zvoliť spôsob zabezpečenia (objednávkou, požiadavkou na OV, požiadavkou na výrobu,...), ďalšie dopĺňajúce údaje (rad dokladov, firma, stredisko,...) a nechať si príslušné doklady vygenerovať. Pokiaľ je spustená z objednávok prijatých, je možné vynechať krok počítania bilancie a nechať si na zabezpečenie pripraviť len karty z objednávky v množstve na objednávke. Je tak možné realizovať možnosť "priameho" generovania objednávok vydaných (OV) podľa objednávok prijatých (OP).

Pri zabezpečovaní dokladov po jednom môže dôjsť k nasledujúcemu nežiaducemu efektu: Takto zabezpečovaný doklad sa bude nakoniec i tak "tváriť" ako nepokrytý. Ďalej viď kap. Často kladené otázky k SCM, otázka Mám dve OP, k nim OV, žiadnu inú požiadavku, napriek tomu sa mi obe OP javia ako úplne nepokryté. Ako to?. Ďalej viď i otázku Pokrytie nepotvrdenej OP.

V systéme je k dispozícii i iná možnosť priamej tvorby OP podľa OV, viď procesná tvorba dokladov OP → OV, avšak s tým, že umožňuje vystaviť jednu OP podľa viacerých vybraných OV, neumožňuje teda automaticky vystaviť viac OP naraz podľa vybraných OV (napr. na rôznych dodávateľov podľa dodávateľov príslušných skladových kariet a pod.).

Ako bolo povedané vyššie, SCM obsahuje číselník dátových zdrojov, ktoré obsahujú pevne definované SQL dopyty, ktoré sa použijú na získanie dát. Všetky dáta, s ktorými sa v SCM pracuje, sa získavajú pomocou interného objektu SCMDataProvider. Tento objekt slúži na získavanie potrebných dát (tzn. na požiadanie načíta dáta z databázy), ďalej na ukladanie načítaných dát do vyrovnávacej pamäte (tzn. slúži tiež ako vyrovnávacia pamäť (cache)) a na vytváranie pohľadov na tieto dáta pre funkčné agendy SCM, QR funkcie alebo OLE rozhranie .
Plnenie vyrovnávacej pamäte:
Funkčné agendy SCM, QR funkcie alebo OLE rozhranie poskytovateľa žiadajú o pripravenie dát pre konkrétnu úlohu – bilanciu, vývoj skladovej položky, výpočet pokrytia dokladu a pod. Pritom dajú poskytovateľovi k dispozícii tieto informácie:
- použité dátové zdroje
- výstupné položky z dátových zdrojov
- zoznam položiek, podľa ktorých sa budú dáta filtrovať (obmedzovať), a ich hodnoty
Poznámka...
Filtrovanie dát prebieha až nad načítanými dátami a vykonáva ho poskytovateľ dát, teda nie v rámci SQL dopytov do databázy. Podrobnejšie viď ďalej, príklad v časti Možnosti obmedzovania dát v agendách SCM.)
Zostavenie výstupných dát z vyrovnávacej pamäte:
Na základe tejto požiadavky načíta poskytovateľ všetky potrebné dáta (tie, ktoré ešte načítaná nemá, viď ďalej), uloží ich do vyrovnávacej pamäte a pripraví tzv. dataset (akúsi tabuľku pripravených dát), ktorý odovzdá naspäť tomu, kto o dáta požiadal (agende SCM, QR funkcii alebo OLE rozhraniu). Při opakovaném vyvolání obdobného požadavku (např. vyvolání funkce Získat záznamy bez vyprázdnění vyrov. paměti s jiným omezením, vyvolání funkce Provést dotaz z jiné agendy či jen s jinou definicí sloupců resp. jinou sadou dat. zdrojů (s jinými datovými zdroji)) poskytovatel dat ví, které datové zdroje již má načtené a ty znovu nenačítá. Načíta len tie, ktoré ešte načítané nemá.

Majme dve definície stĺpcov bilancie. Definícia "pre obchod" nech obsahuje dát. zdroj OP (z objednávok prijatých) a definícia "pre kompletizáciu" nech obsahuje tiež dát. zdroj OP a ďalej dát. zdroj KL materiál (z kompletizačných listov). Vyrovnávacia pamäť nech je prázdna. Pri prvom vykonaní dopytu v agende Bilancia podľa definície stĺpcov "pre obchod", si poskytovateľ dát načíta dáta podľa dátového zdroja OP (z objednávok prijatých) a uloží do vyrovnávacej pamäte. Pri ďalšom vykonaní dopytu, napr. podľa definície stĺpcov "pre kompletizáciu" si načíta už len dáta podľa dát. zdroja KL materiál a do vyrovnávacej pamäte ich pridá. Dáta z OP už nenačíta.
Výhoda tohto správania je v rýchlosti (v mnohých prípadoch totiž postačí). Pozor! Nevýhoda je v tom, že pokiaľ medzi dvomi dopytmi došlo k zmene v dátach, z ktorých čerpá už skôr načítaný dátový zdroj, táto zmena sa neprejaví (do vyrovnávacej pamäte sa automaticky nedostane). Pokiaľ chcete, aby sa prejavila, je potrebné, aby ste vyrovnávaciu pamäť vyprázdnili - pri ďalšom načítaní sa tak znovu načítajú všetky dát. zdroje.

Pokud např. v Bilanci vyvoláme funkci Získat záznamy bez vyprázdnění vyrov. paměti dle definice "pro obchod" z předchozího příkladu, načtou se data z dat. zdroje OP (z objednávek). Pokiaľ potom pridáme novú potvrdenú objednávku, zmažeme nejakú objednávku alebo v nejakej vykonáme opravu a znovu vyvoláme funkciu Vykonať dopyt, zmena sa v bilancii nijako neprejaví (keďže dát. zdroj OP pre načítanie z objednávok prijatých je už načítaný a tým pádom sa znovu nenačítal). Tzn. napr. novo pridaná objednávka v zobrazenej bilancii zahrnutá nie je. Pokiaľ ale pamäť vyprázdnime, tzn. použijeme funkciu Vykonať dopyt s vyprázdnením vyrovnávacej pamäte alebo funkciu Občerstviť, tak sa zmena prejaví, tzn. novo pridaná objednávka v zobrazenej bilancii už zahrnutá bude.

Ďalej viď tiež kap. Často kladené otázky k SCM - otázka V dátach Bilancie nevidím novo vystavený (resp. opravený) doklad, ako to?.
Možnosti vyprázdnenia vyrovnávacej pamäte:
Vyprázdniť vyr. pamäť je možné rôznymi spôsobmi:
- Z agend SCM - použitím funkce Občerstvit v záložkách Seznam nebo pomocí funkce Získat záznamy s vyprázdněním vyrov. paměti ze záložky Omezení. (Vyprázdni sa obsah pôvodný a načíta sa nový).
- Z iných agend ako SCM - použitím funkcie Vyprázdniť vyrovnávaciu pamäť - Vo väčšine agend, v ktorých sú k dispozícii funkcie SCM (napr. v objednávkach prijatých), je k dispozícii i funkcia na vyprázdnenie vyrovnávacej pamäte poskytovateľa dát. (Vyprázdni sa celý obsah, nie selektívne iba dáta získané z agendy, z ktorej bola funkcia vyvolaná a pamäť zostane prázdna).
Poznámka...
Vyvolaním spomenutej funkcie sa vyprázdnia len dočasné tabuľky, vlastný dočasný súbor na disku sa maže pri zatvorení ABRA Gen.
Možnosti načítania vyrovnávacej pamäte:
Ako vyplýva z textu vyššie, dáta do vyrovnávacej pamäte sa načítajú vždy, keď Funkčné agendy SCM, QR funkcia alebo OLE rozhranie žiadajú o príslušné dáta a vo vyrovnávacej pamäti nie je načítaný potrebný dát. zdroj. Teda použitím funkcie Občerstviť v záložkách Zoznam agend SCM alebo pomocou funkcie Získať záznamy zo záložky Obmedzenie, použitím QR funkcie pre SCM napr. v stĺpci v zozname nejakej agendy, v definovateľnom paneli, v tlač. zostave a pod., či vyvolaním príslušných funkcií z OLE rozhrania.

V zozname objednávok prijatých nech je stĺpec s QR funkciou SCMDocumentCoverage na zobrazenie pokrytia dokladu (viď Použitie QuickReports funkce pre zistenie pokrytia dokladov) používajúci sadu dátových zdrojov "Obchod". Zatiaľ sme žiadnu agendu ani funkciu SCM nevolali, vyrovnávacia pamäť je prázdna. Otvoríme agendu objednávok. V tú chvíľu QR funkcia potrebuje od poskytovateľa dát príslušné dáta na zobrazenie pokrytia, teda do vyrovnávacej pamäte sa načítajú dát. zdroje zo sady dátových zdrojov "Obchod". Ak vyrovnávaciu pamäť vyprázdnime (viď možnosti vyprázdnenia vyr. pamäte), tak stačí samotné občerstvenie objednávok k jej novému načítaniu (pri občerstvení QR funkcie znova žiada o dáta z dát. zdrojov, ktoré v pamäti aktuálne načítané nie sú, čiže sa dáta podľa nich znova načítajú.
Z toho o. i. plynie, že ak si zobrazujete pokrytie objednávok pomocou spomenutej QR funkcie a pridali ste novú objednávku, je potrebné vykonať minimálne vyprázdnenie pamäte a občerstvenie zoznamu OP, aby sa nová OP dostala do vyrovnávacej pamäte.
Vnútorná realizácia poskytovateľa dát:
Na realizáciu takejto podoby centrálneho objektu poskytovateľa dát, ktorý spravuje všetky dáta SCM, sa používa zabudovaná open source databáza SQLite. Ide o dynamickú dll knižnicu, ktorá implementuje jednoduchý relačný databázový systém s vyhľadávacím jazykom SQL. Načítané dáta sú uložené v dočasnom súbore na disku (čo je vlastne aktuálny obsah SQLite databázy) a poskytovateľ dát nad nimi s využitím pamäťových tabuliek zostavuje požadované rezy (rôzne pohľady na dáta), ktoré potom vracia miestu, ktoré ich požadovalo.

Na pohľad na obsah SQLite je určená agenda Poskytovateľ dát.
Poskytovateľ dát existuje jeden pre jedno prihlásenie užívateľa.

V SCM sú rôzne možnosti obmedzovania dát, ktoré je možné použiť. Je pritom možné využiť len niektorú z nich alebo ich vhodne kombinovať. Obmedzovanie dát má výhodu vo väčšej rýchlosti (dopyty nad menšou (obmedzenou) množinou dát sú rýchlejšie). Obmedzovanie dát ďalej umožňuje získať rôzne pohľady na dáta. Niekedy nás zaujíma len údaj celkový napr. za všetky sklady a doklady, inokedy naopak len pre vybrané sklady, doklady a pod. Inokedy chceme vidieť oba údaje a mať vedľa seba v bilancii napr. stĺpec s objednaným tovarom z OP za všetky sklady a vedľa toho stĺpce podľa jednotlivých skladov (pre prehľad, modelovanie a pod.)
Kde je možné nejakým spôsobom definovať obmedzenie pre výsledné zobrazené dáta:
- obmedzenie dané samotným SQL dopytom v dát. zdroji
- obmedzenie dátového zdroja zadané v záložke Obmedzenie v sade dátových zdrojov
- obmedzenie dátového zdroja zadané v záložke Obmedzenie v definícii stĺpcov bilancie
- omezení zadané v záložce Omezenífunkčních agend SCM
- použitie dynamicky filtrovaných stĺpcov
Možnosti sú podobné, niekedy je možné rovnaký výsledok dosiahnuť i viacerými spôsobmi (ktoré sa buď vôbec nelíšia alebo sa môžu líšiť v rýchlosti odozvy). Ktorú možnosť si vyberiete, závisí od toho, čo chcete docieliť, či je možné predpokladať opakovanosť tejto požiadavky alebo či ide len o riedky výskyt atď.

Majme dva zásobovače, ktorí nikdy nebudú pracovať s celým sortimentom naraz, ale zásobovač A pracuje so sortimentom A a zásobovač B so sortimentom B. Keďže nebudú svoje sortimenty zdieľať, je toto možné riešiť definíciou dvoch podobných dátových zdrojov s obmedzením, jeden obmedzený za sortiment A, druhý za sortiment B. Každý zo zásobovačov by tak pracoval so "svojou" definíciou stĺpcov, ktorá by sa odkazovala len na "jeho" dátové zdroje. Pokiaľ by ale zásobovač A občas pracoval i so sortimentom kolegu, bolo by vhodnejšie nechať "jeho" dát. zdroje bez obmedzenia, nechať si vytvárať pamäťové tabuľky (viď ďalej) pre celý sortiment a až v záložke Obmedzenie bilancie obmedzovať podľa jedného alebo druhého sortimentu.
Pokiaľ by sme chceli okrem zobrazených výsledkov vidieť údaje určitého stĺpca nejako obmedzené, napr. požiadavky z OP len podľa vybraného radu OP, môžeme to riešiť pridaním dynamicky filtrovaného stĺpca. Ak by sme si ale takéto údaje chceli zobrazovať opakovane, bolo by výhodnejšie pridať si stĺpec natrvalo priamo do definície stĺpcov bilancie.
Pokiaľ by sme mali časť sortimentu, s ktorým nebudeme potrebovať v SCM pracovať (napr. fiktívne skladové karty typu práca), tak môžeme obmedziť priamo v SQL dopyte - tzn. karty tohto typu vôbec nenačítavať. Tým sa zmenší objem načítavaných dát a zvýši rýchlosť odozvy systému.
Odlišnosti v uplatnení obmedzenia podrobnejšie objasníme na príklade Bilancie:
V Bilancii nech je zvolená definícia stĺpcov, nastavené nejaké obmedzenie a zadaný dopyt. V tom okamihu je požiadavka na načítanie dát odovzdaná poskytovateľovi dát (ako bolo objasnené vyššie). Poskytovateľ podľa dátových zdrojov obsiahnutých v zvolenej definícii (musí tam byť aspoň jeden, ako bolo povedané v kap. Definícia stĺpcov bilancie) a podľa SQL dopytov v nich zadaných načíta všetky dáta z databázy a uloží do vyrovnávacej pamäte. (Pri tomto sa žiadne obmedzenie zadané v záložkách Obmedzenie neuplatňuje. Uplatnia sa len "obmedzenia" dané samotnými SQL dopytmi - načítajú sa napr. dáta "len" z potvrdených a nevyrovnaných OP). Vo vyr. pamäti sú teda "všetky" dáta načítané podľa SQL dopytov z dátových zdrojov k všetkým sklad. kartám a skladom, ktoré z týchto použitých dátových zdrojov vyplynú.
Nad týmito všetkými dátami poskytovateľ pre každý nadefinovaný stĺpec bilancie vytvára v pamäti dočasnú tabuľku (napr. jedna tabuľka pre stĺpec zobrazujúci množstvo (Quantity) z OP, druhá pre to isté z OV a pod.). Pri tvorbe tejto tabuľky sa už uplatní obmedzenie dátového zdroja zadané v záložke Obmedzenie v definícii stĺpcov bilancie.

Pokiaľ by sme v obmedzení dát. zdroja načítavajúceho dáta z OP zadali obmedzenie len podľa vybraného radu objednávok, tak by sa tabuľka vytvorila len z údajov OP z tohto radu.
Nakoniec z týchto pomocných dočasných pamäťových tabuliek zostaví výsledný dataset (dočasná "tmp" tabuľka pre danú agendu, pritom sa uplatnia obmedzenia zadané v záložke Obmedzenie Bilancie. (V agende Poskytovateľ dát by bol viditeľný ako dočasná "tmp" tabuľka.) Pokiaľ by sa potom otvoril napr. Vývoj, analogickým spôsobom by sa nad dátami vo vyrovnávacej pamäti zostavila ďalšia "tmp" tabuľka.

Majme dodávanú definíciu stĺpcov bilancie Obchod, ktorá obsahuje dát. zdroje OP, OV, Požiadavky na OV, Stav skladu, Spodný limit). Tú skopírujeme ako Obchod_x a zadáme v nej obmedzenie dátového zdroja OP len podľa radu OPx). Ďalej majme 3 potvrdené nevyrovnané objednávky prijaté v rôznych radoch, napr. OP-1 (s kartami A, B, C v počte 5 ks), OPx-1 (s kartami A, B v počte 1,1ks) a OPy-1 (s kartami A, B v počte 3,3ks). Kvôli jednoduchosti žiadne iné OP neexistujú.
V bilancii vykonáme dopyt s vyprázdnením vyrovnávacej pamäte s definíciou Obchod_x ⇒
Vo vyrovnávacej pamäti budú v jednej tabuľke načítané všetky OP (teda všetky sklad. karty zo všetkých potvrdených nevyrovnaných OP, bez obmedzenia podľa radu), v inej všetky OV, v inej všetky sklad. karty s nenulovým skladom atď. Nad touto vyrovnávacou pamäťou sa zostaví výsledný dataset (dočasná "tmp" tabuľka ), v tomto prípade s obmedzením za rad OPx a použije sa pre zobrazenie požadovanej Bilancie ⇒
V Bilancii pri kartách A a B uvidíme v stĺpci OP len počty 1,1ks (teda počty len z OPx, naopak počty z objednávok OP-1, OPy-1 v iných radoch nebudú zahrnuté). (Hoci vo vyrovnávacej pamäti sú načítané údaje zo všetkých potvrdených nevyrovnaných objednávok prijatých).

Výsledná bilancia nezobrazuje "len" sklad. karty z OPx-1 (teda len karty A, B), ale zobrazuje ešte množstvo ďalších kariet. Prečo? Tieto síce nie sú obsiahnuté v objednávkach prijatých, ale načítali sa vďaka iným dát. zdrojom z danej definície stĺpcov. Napr. vďaka dátovému zdroju Stav skladu, keďže majú nejaký nenulový stav, prípadne vďaka spodnému limitu, keďže ho majú nenulový, alebo vďaka tomu, že sú obsiahnuté v OV a pod. Obmedzenie dátového zdroja OP podľa radu OPx teda neznamená, že sa načítajú a zobrazia len sklad. karty z OPx, ale znamená to, že údaj o požiadavkách z OP bude zohľadňovať len požiadavky v rámci radu OPx.
Pokiaľ by sme si potom takúto bilanciu chceli prehliadať po častiach, napr. zobraziť si ju len pre sklad. karty A, B, môžeme v záložke Obmedzenie Bilancie takéto obmedzenie podľa sklad. kariet A, B zadať. ⇒ Pôvodná dočasná "tmp" tabuľka sa nahradí novou, v tomto prípade s obmedzením jednak podľa radu OPx a ďalej podľa sklad. kariet A, B) a použije sa na nové zobrazenie Bilancie. Uvidíme tak len riadky so sklad. kartami A, B.

Nezbytnou podmínkou pro provoz SCM je, aby byla tato část systému licencována. SCM je licencované samostatne - viď Licencované celky (licencované moduly a vlastnosti).

Není-li licencováno SCM, není k dispozici podpora SCM ani v jiných agendách (např. funkce SCM v agendách jednotlivých dokladů apod.).

Dataset zostavený poskytovateľom dát pre danú agendu sa interne odovzdáva i do tlačových zostáv/def. exportov. Pre funkčné agendy SCM totiž platí, že sa pre ne nedefinujú reportingové miesta, ich DynSQL a čiastkové zdroje dát (datasety), ako je to v iných dokladových a číselníkových agendách ABRA Gen. Dataset, ktorý sa ponúka v definícii tlač. zostáv/def. exportu v týchto agendách je vlastne interne odovzdaný dataset zostavený poskytovateľom dát pre danú agendu. Viď vyššie Poskytovateľ dát - Zostavenie výstupných dát z vyrovnávacej pamäte. Obsahom tohto datasetu je teda vlastne to, čo užívateľ v danej funkčnej agende SCM práve vidí.