public static string fn_RenderCompanyWithLink(string ico, string missingCompanyName = "") { if (!string.IsNullOrEmpty(ico)) { HlidacStatu.Lib.Data.Firma o = HlidacStatu.Lib.Data.Firmy.instanceByIco.Get(ico); if (o.Valid) { //var lbl = Lib.Analysis.KorupcniRiziko.KIndex.GetLastLabel(ico); //string skidx = ""; //if (lbl != null && lbl.Item2 != Lib.Analysis.KorupcniRiziko.KIndexData.KIndexLabelValues.None) //{ // skidx = $"<a href='/kindex/detail/{ico}'>" // + $"<img src='{Lib.Analysis.KorupcniRiziko.KIndexData.KIndexLabelIconUrl(lbl.Item2)}' class='kindex' style='padding:0 3px;height:15px;width:auto' />" // + "</a>"; //} return($"<span>" //+ skidx //TODO KIDX + $"<a href=\"{o.GetUrl(false)}\">{o.Jmeno}</a></span>"); } else { return($"<span>{(string.IsNullOrEmpty(missingCompanyName)? ico : missingCompanyName)}</span>"); } } return(string.Empty); }
public static ReportDataSource TopListPerSum(bool platce) { string field = "prijemce.ico"; if (platce) { field = "platce.ico"; } int size = 300; AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva> aggs = new AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva>() .Terms("perPrice", m => m .Order(o => o.Descending("sumincome")) .Field(field) .Size(size) .Aggregations(agg => agg .Sum("sumincome", s => s .Field(ff => ff.CalculatedPriceWithVATinCZK) ) ) ); var res = HlidacStatu.Lib.Data.Smlouva.Search.RawSearch("{\"query_string\": { \"query\": \"-id:pre*\" } }", 1, 0, anyAggregation: aggs); ReportDataSource rdsPerPrice = new ReportDataSource(new ReportDataSource.Column[] { new ReportDataSource.Column() { Name = "IČO", HtmlRender = (s) => { System.Tuple <string, string> data = (System.Tuple <string, string>)s; return(string.Format("<a href='/subjekt/{0}'>{1}</a>", data.Item2, data.Item1.Replace("&", "&"))); }, TextRender = (s) => { return(((System.Tuple <string, string>)s).Item1.ToString()); } }, new ReportDataSource.Column() { Name = "Součet cen", HtmlRender = (s) => { return(HlidacStatu.Lib.Data.Smlouva.NicePrice((double?)s, html: true, shortFormat: true)); }, OrderValueRender = (s) => { return(HlidacStatu.Util.RenderData.OrderValueFormat((double?)s)); } }, } );;; foreach (Nest.KeyedBucket <object> val in ((BucketAggregate)res.Aggregations["perPrice"]).Items) { HlidacStatu.Lib.Data.Firma f = HlidacStatu.Lib.Data.Firmy.Get((string)val.Key); if (f != null && (!f.PatrimStatu() || platce)) { rdsPerPrice.AddRow( new Tuple <string, string>(HlidacStatu.Lib.Data.Firmy.GetJmeno((string)val.Key), (string)val.Key), val.Sum("sumincome").Value ); } } return(rdsPerPrice); }
public static ReportDataSource TopListPerCount(bool platce) { string field = "prijemce.ico"; if (platce) { field = "platce.ico"; } int size = 300; AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva> aggs = new AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva>() .Terms("perIco", m => m .Field(field) .Size(size) ); var res = HlidacStatu.Lib.Data.Smlouva.Search.RawSearch("{\"query_string\": { \"query\": \"-id:pre*\" } }", 1, 0, anyAggregation: aggs); ReportDataSource rdsPerIco = new ReportDataSource(new ReportDataSource.Column[] { new ReportDataSource.Column() { Name = "IČO", HtmlRender = (s) => { System.Tuple <string, string> data = (System.Tuple <string, string>)s; return(string.Format("<a href='/subjekt/{0}'>{1}</a>", data.Item2, data.Item1.Replace("&", "&"))); }, TextRender = (s) => { return(((System.Tuple <string, string>)s).Item1.ToString()); } }, new ReportDataSource.Column() { Name = "Počet smluv", HtmlRender = (s) => { return(HlidacStatu.Util.RenderData.NiceNumber(HlidacStatu.Util.ParseTools.ToDecimal((string)s) ?? 0, html: true)); }, OrderValueRender = (s) => { return(HlidacStatu.Util.RenderData.OrderValueFormat(HlidacStatu.Util.ParseTools.ToDecimal((string)s) ?? 0)); } }, } ); foreach (Nest.KeyedBucket <object> val in ((BucketAggregate)res.Aggregations["perIco"]).Items) { HlidacStatu.Lib.Data.Firma f = HlidacStatu.Lib.Data.Firmy.Get((string)val.Key); if (f != null && (!f.PatrimStatu() || platce)) { rdsPerIco.AddRow( new Tuple <string, string>(HlidacStatu.Lib.Data.Firmy.GetJmeno((string)val.Key), (string)val.Key), val.DocCount.ToString() ); } } return(rdsPerIco); }
public static string fn_RenderCompanyName(string ico, string missingCompanyName = "") { if (!string.IsNullOrEmpty(ico)) { HlidacStatu.Lib.Data.Firma o = HlidacStatu.Lib.Data.Firmy.instanceByIco.Get(ico); if (o.Valid) { return($"<span>{o.Jmeno}</span>"); } else { return($"<span>{(string.IsNullOrEmpty(missingCompanyName) ? ico : missingCompanyName)}</span>"); } } return(string.Empty); }
public static string fn_RenderCompanyWithLink(string ico) { if (!string.IsNullOrEmpty(ico)) { HlidacStatu.Lib.Data.Firma o = HlidacStatu.Lib.Data.Firmy.instanceByIco.Get(ico); if (o.Valid) { return($"<span><a href=\"{o.GetUrl(false)}\">{o.Jmeno}</a></span>"); } else { return($"<span>{ico}</span>"); } } return(string.Empty); }
public static string fn_RenderCompanyStatistic(string ico, bool twoLines = false, string prefix = "", string postfix = "") { if (!string.IsNullOrEmpty(ico)) { HlidacStatu.Lib.Data.Firma o = HlidacStatu.Lib.Data.Firmy.instanceByIco.Get(ico); if (o.Valid) { var stat = o.Statistic(); return($"<span>{prefix}{stat.BasicStatPerYear.SummaryAfter2016().ToNiceString(o, true, customUrl: "/hledatSmlouvy?q=ico:" + o.ICO, twoLines: twoLines)}{postfix}</span>"); } else { return($""); } } return(string.Empty); }
public void CheckSubjekt(Lib.Data.Smlouva.Subjekt d, Lib.Data.Smlouva item, ref List <Issue> issues) { List <Issue> tmpIss = new List <Issue>(); bool osoba = false; bool isZahranicniSubjekt = false; string lnazev = d.nazev.ToLowerInvariant(); isZahranicniSubjekt = (lnazev.Contains("ltd.") || lnazev.Contains("inc.") || lnazev.Contains("gmbh")); isZahranicniSubjekt = isZahranicniSubjekt || HlidacStatu.Util.DataValidators.IsZahranicniAdresa(d.adresa); //zjisti, zda nejde o 340/2015 string dnazev = Devmasters.TextUtil.RemoveDiacritics(d.nazev).Trim(); // obchodní tajemství string[] obchodni_taj_regex = new string[] { "340\\s* / \\s*2015", "(obchodni|bankovni|) \\s* (tajemstvi)", "nezverejnuje", "fyzicka \\s* osoba", "§ \\s* 5 \\s* odst.\\s*", "vylouceno \\s* z \\s* uverejneni" }; bool obchodni_tajemstvi = false; foreach (var r in obchodni_taj_regex) { if (System.Text.RegularExpressions.Regex.IsMatch(dnazev, r, regexOptions)) { obchodni_tajemstvi = true; break; } } bool hasIco = false; bool hasDS = false; if (string.IsNullOrEmpty(d.ico)) { //tmpIss.Add(new Issue(this,16, "Chybí IČO", string.Format("Neuvedeno IČO u dodavatele '{0}'", d.nazev))); } else if (Util.DataValidators.CheckCZICO(d.ico) == false && Util.DataValidators.IsZahranicniAdresa(d.ico) == false) { tmpIss.Add(new Issue(this, (int)IssueType.IssueTypes.Vadne_ICO, "Vadné IČO", string.Format("Subjekt '{0}' má neplatné IČO", d.nazev))); } else { hasIco = true; } if (hasIco && Util.DataValidators.IsZahranicniAdresa(d.ico) == false) { //check ICO in registers Lib.Data.Firma f = Lib.Data.Firma.FromIco(d.ico, true); if (!Lib.Data.Firma.IsValid(f)) { issues.Add(new Issue(this, (int)IssueType.IssueTypes.Neexistujici_ICO, "Neexistující IČO", string.Format("Subjekt '{0}' má neexistující IČO", d.nazev))); hasIco = false; } } if (string.IsNullOrEmpty(d.datovaSchranka)) { //tmpIss.Add(new Issue(this, "Chybí datová schránka", string.Format("Dodavatel '{0}' bez datove schránky", d.nazev))); } else { hasDS = true; } if (hasDS == false && hasIco == false && string.IsNullOrEmpty(d.nazev)) { issues.Add(new Issue(this, (int)IssueType.IssueTypes.Zcela_Chybi_identifikace_smluvni_strany, "Chybí identifikace smluvní strany", "Smluvní strana není nijak identifikována")); } else if (hasDS == false && hasIco == false && !string.IsNullOrEmpty(d.nazev)) { if (obchodni_tajemstvi) { issues.Add(new Issue(this, (int)IssueType.IssueTypes.NeverejnyUdaj, "Identifikace smluvní strany", "Údaj není veřejný na základě § 5 odst. 6 zákona č. 340/2015 Sb., o registru smluv. Utajení smluvní strany je možné pouze v odůvodněných případech, což při této kontrole nehodnotíme.")); } else if (isZahranicniSubjekt) { issues.Add(new Issue(this, (int)IssueType.IssueTypes.Firma_Cizi_Stat, "Identifikace smluvní strany", string.Format("Smluvní strana '{0}' bez datove schránky a platného IČO. Jedná se pravděpodobně o zahraniční subjekt", d.nazev))); } else { //zjisti, zda nejde o osobu osoba = Lib.Validators.IsOsoba(dnazev); if (osoba) { issues.Add(new Issue(this, (int)IssueType.IssueTypes.Osoba, "Identifikace smluvní strany", string.Format("Smluvní strana '{0}' bez datove schránky a platného IČO. Jedná se pravděpodobně o fyzickou osobu", d.nazev))); } else { issues.Add(new Issue(this, (int)IssueType.IssueTypes.Chybi_identifikace_smluvni_strany, "Chybí identifikace smluvní strany", string.Format("Smluvní strana '{0}' bez datove schránky a platného IČO.", d.nazev))); } } } else { issues.AddRange(tmpIss); } //casove posloupnosti //datum vzniku firmy HlidacStatu.Lib.Data.Firma firma = null; if (hasIco) { firma = Lib.Data.Firma.FromIco(d.ico, true); } if (!Lib.Data.Firma.IsValid(firma) && hasDS) { firma = Lib.Data.Firma.FromDS(d.datovaSchranka, true); } if (Lib.Data.Firma.IsValid(firma)) { if (firma.IsNespolehlivyPlatceDPH()) { var nespoleh = firma.NespolehlivyPlatceDPH(); if ((nespoleh.FromDate.HasValue && nespoleh.ToDate.HasValue && nespoleh.FromDate.Value <= item.datumUzavreni && item.datumUzavreni <= nespoleh.ToDate.Value ) || (nespoleh.FromDate.HasValue && nespoleh.ToDate.HasValue == false && nespoleh.FromDate.Value <= item.datumUzavreni ) ) { issues.Add(new Issue(this, (int)IssueType.IssueTypes.SmlouvaUzavrena_s_NespolehlivymPlatcemDPH, "Smlouva uzavřena s nespolehlivým plátcem DPH.", string.Format("Smlouva byla uzavřena v den, kdy byl dodavatel {0} v registru nespolehlivých plátců DPH Finanční správy.", d.nazev))); } } } if (Lib.Data.Firma.IsValid(firma) && firma.Datum_Zapisu_OR.HasValue) { double zalozeniPredPodpisem = (item.datumUzavreni - firma.Datum_Zapisu_OR.Value).TotalDays; if (zalozeniPredPodpisem < 0) //zalozeno po podpisu { issues.Add(new Issue(this, (int)IssueType.IssueTypes.Firma_vznikla_az_po, "Firma vznikla až po podpisu smlouvy", string.Format("Firma {0} vznikla {1} dní po podpisu smlouvy", d.nazev, Math.Abs((int)zalozeniPredPodpisem)), null, new { days = (int)zalozeniPredPodpisem } )); } else if (zalozeniPredPodpisem < 60) { issues.Add(new Issue(this, (int)IssueType.IssueTypes.Firma_vznikla_kratce_pred, "Firma vznikla krátce před podpisem smlouvy", string.Format("Firma {0} vznikla {1} dní před podpisem smlouvy", d.nazev, (int)zalozeniPredPodpisem), null, new { days = (int)zalozeniPredPodpisem }, false )); } } }