Vylepšený dotaz Hlídače stavu skladu

Uživatelský dotaz na zjištění stavu skladu funguje správně. Pokud ale vytvořím na chybějící zboží objednávku vydanou, měla by se již ve stavu skladu zohlednit, abychom dokola neobjednávali stále stejné zboží.

Přičtení zatím nezrealizovaných objednávek vydaných

Uživatelský dotaz je tedy potřeba upravit a nevyřízené vydané objednávky v něm zohlednit.
Ke každé skladové kartě, jejíž stav je pod minimální hodnotou, je potřeba připočíst součet množství z nevyřízených objednávek.

Doklady „obchodního kolečka“ jsou ve FlexiBee uloženy v tabulce dDoklObch. V této tabulce se tedy nacházejí objednávky, poptávky a nabídky. Jak přijaté tak vydané. Rozlišení mezi jednotlivými druhy dokladů je možné pomocí sloupce modul.
Objednávky vydané, které nás zajímají, mají ve sloupci modul hodnotu OBV.

Položky objednávek vydaných jsou pak uloženy v tabulce dPolObch. Jako v případě dokladů, jsou zde všechny možné položky, ale nás opět budou zajímat jen ty, které mají ve sloupci modul hodnotu OBV.

Objednané množství je na položkách vydaných objednávek uloženo ve sloupci mnozMj. Od této hodnoty je ale nutné odečíst již realizované množství, v případě částečně realizovaných objednávek. Již realizované množství je uloženo ve sloupci mnozMjReal.

Další věcí, kterou potřebujeme udělat, je vyřadit objednávky, které jsou ve stavu Hotovo, Vydáno nebo Storno. Stav objednávky je uložen ve sloupci stavUzivK a musíme vyřadit ty objednávky, které mají v tomto sloupci hodnoty stavDoklObch.hotovo, stavDoklObch.vydano nebo stavDoklObch.storno.

Primární dodavatel

Dalším sloupcem, který jo dobré do výsledku dotazu doplnit, je zkratka dodavatele zboží. To nám umožní správné položky objednat u správného dodavatele. Výsledný XLS soubor, který nám Integromat zašle na mail, pak bude možné rozdělit na jednotlivé objednávky pro naše dodavatele a pomocí funkce Import z XLS je rovnou naimportovat do objednávek vydaných.

Pokud má být ve výstupu zkratka primárního dodavatele, je nutné k ceníku přijoinovat adresář firem. Adresář je uložen v tabulce aAdresar. Část dotazu s joinem tedy bude vypadat takto

select a.kod from ccenik c
  left join aadresar a on a.idfirmy = c.iddodavatel



Zkušenosti ale hovoří celkem jasně. Mnoho firem v tomto nemá zcela pořádek a také mnohdy nejsou schopny určit, který dodavatel je primární. Proto přicházejí v úvahu další možnosti.

Jednou z těchto možností je vybrat nejnovějšího dodavatele. Část dotazu pro získání nejnovějšího dodavatele zboží je

select kod from aadresar
  where idfirmy in (select max(idfirmy) from cdodavatele dod where dod.idcenik = c.idcenik)



Kompletní uživatelský dotaz

select cenik_kod, cenik_nazev, sklad_kod, (a.minMj - a.stavMj - a.objednano) as rozdil, stavmj, minmj, objednano, firma_kod from (
  select c.kod as cenik_kod,
    c.idcenik as cenik_id,
    c.nazev as cenik_nazev,
    s.kod as sklad_kod,
    s.idbsp as sklad_id,
    k.stavmjspozadavky as stavMj,
    k.minmj as minmj,
    coalesce((select sum(mnozMj - mnozMjReal) from dpolobch po
      left join ddoklobch d on po.iddoklobch = d.iddoklobch
      where po.modul = 'OBV' and po.idcenik = k.idcenik and po.idbspskl = k.idskladu and po.storno = false
        and (d.stavUzivK is null or d.stavUzivK not in ('stavDoklObch.hotovo', 'stavDoklObch.vydano', 'stavDoklObch.storno'))), 0.0) as objednano,
    (select kod from aadresar where idfirmy in (select max(idfirmy) from cdodavatele as dod where dod.idcenik = c.idcenik)) as firma_kod
  from skarty k
    join nucetobdobi uo on k.iducetobdobi = uo.iducetobdobi
    left join ccenik c on k.idcenik = c.idcenik
    left join dbsp s on k.idskladu = s.idbsp
  where uo.platioddata <= now() and uo.platidodata >= now()
    and k.stavmjspozadavky < k.minmj
) as a
where (a.minMj - a.stavMj - a.objednano) > 0
order by firma_kod





Co udělat s výsledným excelem? Naimportovat ho!

XLS soubor, který nám z Integromatu dorazí na email, je možné použít k vytvoření objednávek vydaných pro naše dodavatele.

Nejprve si XLS soubor rozdělíme podle jednotlivých dodavatelů (to může klidně udělat integromat za nás 🙂 ). Ve FlexiBee vytvoříme novou objednávku vydanou a zapamatujeme si číslo dokladu, které FlexiBee tomuto dokladu přidělilo. Do souboru, jako nový sloupec, doplníme ke každé položce číslo dokladu hlavičky a můžeme importovat.
V nastavení importu vybereme sloupce Obchodní doklad, Kód z ceníku, Název, Sklad a nakonec Množství.
Těmto vlastnostem FlexiBee v XLS souboru odpovídají nově přidaný sloupec s číslem dokladu, cenik_kod, cenik_nazev, sklad_kod a rozdil. Ostatní sloupce ze souboru pro import nepotřebujeme a můžeme je ignorovat. Ve výstupu jsou jen pro kontrolu a ulehčení práce.

REST API, Integromat

- (17. 3. 2019)

Jsem programátor, horolezec a tak trochu FlexiBee fanatik :-).
Na CharlieBlogu sepisuji své nápady a poznatky už od roku 2006.

Powered by CharlieBlog Engine v2.3 - Login