Realizace storna příjmu
=======================

1. nastavení globální konfigurace:
----------------------------------

OZ - kontrola storna příjmu - TabHGlob.KontrolaStornaPrijmu

 0 = na jednotkovou cenu storna (default)
 1 = na celkový stav skladu

OZ - druh skladu - TabHGlob.DruhSkladu

 2 = FIFO (default)
 3 = průměry

2. tvorba storna
----------------

 a. generované          - původní množství
 b. položkovým převodem - částečné množství
 c. bez položkové vazby - neznáme původní doklad

3. zkratky a názvosloví
-----------------------------------------------------
zkratka  sloupec            název
-----------------------------------------------------
 JC    = JCbezDaniKCPoS   = jednotková cena položky
 CC    = CCbezDaniKCPoS   = celková cena položky
 Mnoz  = Mnozstvi         = množství položky
 JCE   = JCEvid           = jednotková cena evidenční
 CCE   = CCEvid           = celková cena evidenční
 MnozR = MnozstviReal     = množství realizace
 CCPoz = CCevidPozadovana = celková cena evidenční požadovaná


4. testy při realizaci
----------------------

 a. test na nenulové ceny a množství
    JCE AND CCE AND MnozR = 0 AND (JC OR CC OR Mnoz = 0) --> chyba
    "některé položky mají nulové ceny či množství"

 b. test na JC - jen pro TabHGlob.KontrolaStornaPrijmu = 0
    vyhledani nejstarsiho zaznamu v TabJC se stejnou cenou
    SELECT TOP 1 ID FROM TabJC
    WHERE EcJC = CCPoz/MnozR -- tolerance +- 1 haléř, pro CCPoz=0 dosadit CC
    ORDER BY DatPorizeni ASC
    JC nenalezena, případně má malé množství --> chyba
    "nedostatek množství na stavu skladu JC"

5. realizace postup stanovení CCE
---------------------------------
 a.Jen pro TabHGlob.KontrolaStornaPrijmu = 0  CCE navýšíme a MnozR vykryjeme JC dle 4.b.
 b.Jen pro TabHGlob.KontrolaStornaPrijmu = 1  CCE navýšíme a MnozR vykryjeme JC dle kursoru:
   SELECT ID FROM TabJC
   WHERE EcJC = CCPoz/MnozR -- tolerance +- 1 haléř, pro CCPoz=0 dosadit CC
   ORDER BY DatPorizeni ASC
 c.Dokryjeme množství
   SELECT ID FROM TabJC WHERE 
   -- u storna nesmi brat v uvahu JC kde uz provedl odpocet
   ((@DruhPohybuZbo <> 1) OR (EcJC <> CC/MnozR) -- tolerance +- 1 haléř
   ORDER BY DatPorizeni ASC

6. co dělat, když neprochází realizace storna příjmu?
-----------------------------------------------------
1. Nastavit HGlob.OZ.kontrola storna příjmu na celkový stav skladu
2. Smazat všechny JC a spustit kontrolu JC
   
 



