public static string PartsDescription(KIndexData.KIndexParts part) { switch (part) { case KIndexData.KIndexParts.PercentBezCeny: return("Procentní podíl smluv uzavřených se soukromými společnostmi za kalendářní rok, které mají skrytou cenu. Cenu je možné skrýt pouze z důvodu bankovního a obchodního tajemství" + "a tato výjimka je velmi často zneužívána pro utajení hodnoty smlouvy. " + "Hodnota <b>0</b> znamená, že žádná smlouva nemá skrytou cenu, hodnota <b>0.5</b> znamená polovinu smluv se skrytou cenou."); case KIndexData.KIndexParts.PercSeZasadnimNedostatkem: return("Procentní podíl smluv, u kterých jsme při analýze našli zásadní nedostatky. " + "Hodnota <b>0</b> znamená, že žádná smlouva nemá zásadní nedostatky, hodnota <b>0.5</b> znamená polovinu smluv se zásadními nedostatky."); case KIndexData.KIndexParts.CelkovaKoncentraceDodavatelu: return("Koncentrace dodavatelů ukazuje míru nerovnoměrného rozdělení peněz mezi dodavatele. Neboli - zda malé množství dodavatelů dostává většinu peněz." + $"Koncentraci dodavatelů počítáme pouze pro soukromé dodavatele, tzn. pouze pro smlouvy mezi organizací a soukromými dodavateli. " + "Pro výpočet používáme upravený <b>Herfindahl Hirschman Index</b> a způsob výpočtu podrobně popisujeme v metodice. " + "Hodnota <b>0</b> znamená ideální stav, ideální konkurenci mezi dodavateli, neboli že všichni dodavatelé mají pouze 1 smlouvu ve stejné výši." + "Hodnota <b>od 0.25 do 1.0</b> znamená vysokou koncentraci dodavatelů až monopolní postavení jednoho z nich."); case KIndexData.KIndexParts.KoncentraceDodavateluBezUvedeneCeny: return("Koncentrace dodavatelů ukazuje míru nerovnoměrného rozdělení peněz mezi dodavatele. Neboli - zda malé množství dodavatelů dostává většinu peněz." + $"V tomto parametru zkoumáme koncentraci dodavatelů u smluv, které mají utajenou cenu. Jinak řečeno - jestli k utajování ceny nedochází pouze u některý vybraných dodavatelů. " + "Hodnota <b>0</b> znamená ideální stav." + "Hodnota <b>od 0.25 do 1.0</b> znamená, že utajování ceny se týká jen vybraného okruhu dodavatelů."); case KIndexData.KIndexParts.PercSmluvUlimitu: return("Procentní podíl smluv, jejichž hodnota je pouze o malou částku nižší než je zákonný limit, nad kterým by se zakázka musela soutěžit podle zákona o zadávání veřejných zakázek. " + "Typicky se jedná o limit <b>6 miliónů</b> korun pro stavební zakázky a <b>2 miliony</b> pro ostatní." + "Hodnota <b>0</b> znamená, že žádná smlouva není u limitu, hodnota <b>1.0</b> znamená všechny smluvy u limitu."); case KIndexData.KIndexParts.KoncentraceDodavateluCenyULimitu: return("Koncentrace dodavatelů ukazuje míru nerovnoměrného rozdělení peněz mezi dodavatele. Neboli - zda malé množství dodavatelů dostává většinu peněz." + $"V tomto parametru zkoumáme koncentraci dodavatelů u smluv, které mají cenu u limitu veřejných zakázek. " + $"Jinak řečeno - jestli se obcházení zákona o zadávání veřejných zakázek netýka pouze některých vybraných dodavatelů. " + "Hodnota <b>0</b> znamená ideální stav." + "Hodnota <b>od 0.25 do 1.0</b> znamená, že ceny smluv u limitu VZ se týká jen vybraného okruhu dodavatelů."); case KIndexData.KIndexParts.PercNovaFirmaDodavatel: return("Procentní podíl smluv, které jsou uzavřeny z nově založenou firmou. " + "Hodnota <b>0</b> znamená, že žádná smlouva takto uzavřená není, hodnota <b>0.5</b> znamená polovinu smluv uzavřenou s novými firmami."); case KIndexData.KIndexParts.PercUzavrenoOVikendu: return("Procentní podíl smluv, které jsou podepsány o víkendu nebo státním svátku. Státní úřady obvykle neuzavírají smlouvy mimo pracovní dny. Historicky se u veřejně známých kauz stávalo, " + "že právě ty problematické smlouvy byly uzavřeny mimo pracovní den, aby se snížila možnost třetích stran na to reagovat. " + "Takto Ministerstvo dopravy obešlo konkurenci a <a href='https://www.idnes.cz/ekonomika/doprava/stat-obesel-skytoll-podpisem-smlouvy-s-kapschem-v-nedeli.A160830_175428_eko-doprava_suj' onclick=\"return trackOutLink(this, 'kindex-detail'); \">uzavřelo smlouvu za 5 miliard Kč v neděli</a>. " + "Hodnota <b>0</b> znamená, že žádná smlouva takto uzavřená není, hodnota <b>0.5</b> znamená polovinu smluv uzavřenou mimo pracovní den."); case KIndexData.KIndexParts.PercSmlouvySPolitickyAngazovanouFirmou: return("Procentní podíl smluv, které jsou uzavřeny s firmou, která má vazbu na politiku, neboli sponzorovala politickou stranu, " + "nebo je přímo či nepřímo vlastněna sponzorem politické strany anebo ji přímo či nepřímo vlastní politik. " + "Hodnota <b>0</b> znamená, že žádná smlouva s takovou firmou uzavřená není, hodnota <b>0.5</b> znamená, že polovina smluv je uzavřena s takovými firmami."); case KIndexData.KIndexParts.KoncentraceDodavateluObory: return("Koncentrace dodavatelů ukazuje míru nerovnoměrného rozdělení peněz mezi dodavatele. Neboli - zda malé množství dodavatelů dostává většinu peněz." + "Celkovou koncentraci dodavatelů počítáme v jiném parametru. Zde analyzujeme, zda nedochází ke koncentraci dodavatelů pouze v některých oblastech. " + "Např. pouze v oblasti IT, právní služeb apod. Způsob výpočtu podrobně popisujeme v metodice K-Indexu." + "Hodnota <b>0</b> znamená ideální stav, ideální konkurenci mezi dodavateli, neboli že všichni dodavatelé mají pouze 1 smlouvu ve stejné výši." + "Hodnota <b>od 0.25 do 1.0</b> znamená vysokou koncentraci dodavatelů až monopolní postavení jednoho z nich v nejdůležitějších oborech."); case KIndexData.KIndexParts.PercSmlouvyPod50kBonus: return("Bonus (proto má zápornou hodnotu) pro organizace, které jsou transparetní nad rámec zákona. Pokud vkládají do registru smluv smlouvy pod hodnotu 50.000 Kč (což nemusí), mohou dostat bonus. " + "Pokud je podíl smluv pod 50.000 Kč o 25% vyšší než je obvyklé (průměr celého registru smluv), pak mají bonus 0.25 bodů. Pokud je podíl vyšší o více než 50%, pak je bonus 0.5 bodů. Pokud je podíl vyšší o více než 75%, pak je bonus 0.75 bodů."); default: return(""); } }
public static string SmlouvyQueryForPart(string ico, KIndexData.KIndexParts part, KIndexData.Annual annual, string oborName = null) { string q = ""; if (annual is null) { return(null); } string baseQ = $"ico:{ico} AND datumUzavreni:[{annual.Rok}-01-01 TO {annual.Rok + 1}-01-01}}"; switch (part) { case KIndexParts.PercentBezCeny: return(baseQ + " AND " + "cena:0"); case KIndexParts.PercSeZasadnimNedostatkem: return(baseQ + " AND " + "chyby:zasadni"); case KIndexParts.PercSmlouvySPolitickyAngazovanouFirmou: return(baseQ + " AND " + "hint.smlouvaSPolitickyAngazovanymSubjektem:>0"); case KIndexParts.CelkovaKoncentraceDodavatelu: q = annual?.CelkovaKoncentraceDodavatelu?.Query ?? ""; if (!string.IsNullOrEmpty(q)) { return(" hint.vztahSeSoukromymSubjektem:>0 AND " + q); } return(q); case KIndexParts.KoncentraceDodavateluBezUvedeneCeny: q = annual?.KoncentraceDodavateluBezUvedeneCeny?.Query ?? ""; if (!string.IsNullOrEmpty(q)) { return(" hint.vztahSeSoukromymSubjektem:>0 AND " + q); } return(q); case KIndexParts.KoncentraceDodavateluObory: q = annual?.KoncetraceDodavateluObory.FirstOrDefault(m => m.OborName == oborName)?.Koncentrace?.Query ?? ""; if (!string.IsNullOrEmpty(q)) { return(" hint.vztahSeSoukromymSubjektem:>0 AND " + q); } return(q); case KIndexParts.KoncentraceDodavateluCenyULimitu: q = annual?.KoncentraceDodavateluCenyULimitu?.Query ?? ""; if (!string.IsNullOrEmpty(q)) { return(" hint.vztahSeSoukromymSubjektem:>0 AND " + q); } return(q); case KIndexParts.PercSmluvUlimitu: return(baseQ + " AND " + "hint.smlouvaULimitu:>0"); case KIndexParts.PercNovaFirmaDodavatel: return(baseQ + " AND " + "( hint.pocetDniOdZalozeniFirmy:>-50 AND hint.pocetDniOdZalozeniFirmy:<30 )"); case KIndexParts.PercUzavrenoOVikendu: return(baseQ + " AND " + "hint.denUzavreni:>0"); case KIndexParts.PercSmlouvyPod50kBonus: return(baseQ + " AND " + " cena:>0 AND cena:<50000"); default: return(baseQ); } }