private string Ser(Lib.Data.Smlouva.Subjekt subj) { if (subj == null) { return(null); } return(Newtonsoft.Json.JsonConvert.SerializeObject(new { ico = subj.ico, nazev = subj.nazev })); }
public void UpdateSmluvniStrany(ref Lib.Data.Smlouva item, Lib.Data.Smlouva.Subjekt platce, Lib.Data.Smlouva.Subjekt[] prijemce) { item.Enhancements = item.Enhancements.AddOrUpdate( new Enhancement("Ruční nastavení smluvních stran", "Ručně nastaven plátce", "item.Platce", Ser(item.Platce), Ser(platce), this) ); item.Platce = platce; item.Enhancements = item.Enhancements.AddOrUpdate( new Enhancement("Ruční nastavení smluvních stran", "Ručně nastaven příjemce", "item.Prijemce", Ser(item.Prijemce), Ser(prijemce), this) ); item.Prijemce = prijemce; }
public bool UpdateSmluvniStrany(ref Lib.Data.Smlouva item, Lib.Data.Smlouva.Subjekt platce, Lib.Data.Smlouva.Subjekt[] prijemce) { item.Enhancements = item.Enhancements.AddOrUpdate( new Enhancement(NastaveniSmluvnichStran, "Ručně nastaven plátce", "item.Platce", Ser(item.Platce), Ser(platce), this) ); item.Platce = platce; item.Enhancements = item.Enhancements.AddOrUpdate( new Enhancement(NastaveniSmluvnichStran, "Ručně nastaven příjemce", "item.Prijemce", Ser(item.Prijemce), Ser(prijemce), this) ); item.Prijemce = prijemce; return(true); }
public void Update(ref Smlouva item) { //return; //DOTO //check missing DS/ICO Lib.Data.Smlouva.Subjekt subj = item.Platce; //check formal valid ICO string ico = subj.ico; if (!string.IsNullOrEmpty(ico) && !Devmasters.Core.TextUtil.IsNumeric(ico)) { //neco spatne v ICO ico = System.Text.RegularExpressions.Regex.Replace(ico.ToUpper(), @"[^0-9\-.,]", string.Empty); item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Opraveno IČO subjektu", "", "platce.ico", subj.ico, ico, this)); subj.ico = ico; } if (string.IsNullOrEmpty(subj.ico) && !string.IsNullOrEmpty(subj.datovaSchranka)) { HlidacStatu.Lib.Data.Firma f = HlidacStatu.Lib.Data.Firma.FromDS(subj.datovaSchranka, true); if (Firma.IsValid(f)) { item.Platce.ico = f.ICO; item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněno IČO subjektu", "", "platce.ico", "", f.ICO, this)); } } else if (!string.IsNullOrEmpty(subj.ico) && string.IsNullOrEmpty(subj.datovaSchranka)) { HlidacStatu.Lib.Data.Firma f = HlidacStatu.Lib.Data.Firma.FromIco(subj.ico, true); if (Firma.IsValid(f) && f.DatovaSchranka != null && f.DatovaSchranka.Length > 0) { item.Platce.datovaSchranka = f.DatovaSchranka[0]; item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněna datová schránka subjektu", "", "platce.datovaSchranka", "", f.DatovaSchranka[0], this)); } } else if (string.IsNullOrEmpty(subj.ico) && string.IsNullOrEmpty(subj.datovaSchranka) && !string.IsNullOrEmpty(subj.nazev)) { //based on name //simple compare now if (Lib.Data.Firma.Koncovky.Any(m => subj.nazev.Contains(m))) { Lib.Data.Firma f = Lib.Data.Firma.FromName(subj.nazev, true); if (Firma.IsValid(f)) { item.Platce.ico = f.ICO; item.Platce.datovaSchranka = f.DatovaSchranka.Length > 0 ? f.DatovaSchranka[0] : ""; item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněno IČO subjektu", "", "Platce.ico", "", f.ICO, this)); if (f.DatovaSchranka.Length > 0) { item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněna datová schránka subjektu", "", "Platce.datovaSchranka", "", f.DatovaSchranka[0], this)); } } else { //malinko uprav nazev, zrus koncovku aposledni carku string modifNazev = Lib.Data.Firma.JmenoBezKoncovky(subj.nazev); f = Lib.Data.Firma.FromName(modifNazev, true); if (Firma.IsValid(f)) { item.Platce.ico = f.ICO; item.Platce.datovaSchranka = f.DatovaSchranka.Length > 0 ? f.DatovaSchranka[0] : ""; item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněno IČO subjektu", "", "Platce.ico", "", f.ICO, this)); if (f.DatovaSchranka.Length > 0) { item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněna datová schránka subjektu", "", "Platce.datovaSchranka", "", f.DatovaSchranka[0], this)); } } } } } if (string.IsNullOrEmpty(subj.nazev) && !string.IsNullOrEmpty(subj.ico)) { //dopln chybejici jmeno a adresu HlidacStatu.Lib.Data.Firma f = HlidacStatu.Lib.Data.Firma.FromIco(subj.ico, true); if (Firma.IsValid(f)) { subj.nazev = f.Jmeno; item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněn Název subjektu", "", "Platce.nazev", "", f.ICO, this)); } } for (int i = 0; i < item.Prijemce.Count(); i++) { Smlouva.Subjekt ss = item.Prijemce[i]; ico = ss.ico; if (!string.IsNullOrEmpty(ico) && !Devmasters.Core.TextUtil.IsNumeric(ico)) { //neco spatne v ICO ico = System.Text.RegularExpressions.Regex.Replace(ico.ToUpper(), @"[^A-Z0-9\-.,]", string.Empty); item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Opraveno IČO subjektu", "", "item.Prijemce[" + i.ToString() + "].ico", ss.ico, ico, this)); ss.ico = ico; } if (string.IsNullOrEmpty(ss.ico) && !string.IsNullOrEmpty(ss.datovaSchranka)) { HlidacStatu.Lib.Data.Firma f = HlidacStatu.Lib.Data.Firma.FromDS(ss.datovaSchranka, true); if (Firma.IsValid(f)) { item.Prijemce[i].ico = f.ICO; item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněno IČO smluvní strany", "", "Prijemce[" + i.ToString() + "].ico", "", f.ICO, this)); } } else if (!string.IsNullOrEmpty(ss.ico) && string.IsNullOrEmpty(ss.datovaSchranka)) { HlidacStatu.Lib.Data.Firma f = HlidacStatu.Lib.Data.Firma.FromIco(ss.ico, true); if (Firma.IsValid(f) && f.DatovaSchranka != null && f.DatovaSchranka.Length > 0) { item.Prijemce[i].datovaSchranka = f.DatovaSchranka[0]; item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněna datová schránka smluvní strany", "", "item.Prijemce[" + i.ToString() + "].datovaSchranka", "", f.DatovaSchranka[0], this)); } } else if (string.IsNullOrEmpty(ss.ico) && string.IsNullOrEmpty(ss.datovaSchranka) && !string.IsNullOrEmpty(ss.nazev)) { //based on name //simple compare now if (Lib.Data.Firma.Koncovky.Any(m => ss.nazev.Contains(m))) { Lib.Data.Firma f = Lib.Data.Firma.FromName(ss.nazev, true); if (Firma.IsValid(f)) { item.Prijemce[i].ico = f.ICO; item.Prijemce[i].datovaSchranka = f.DatovaSchranka.Length > 0 ? f.DatovaSchranka[0] : ""; item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněno IČO smluvní strany", "", "item.Prijemce[" + i.ToString() + "].ico", "", f.ICO, this)); if (f.DatovaSchranka.Length > 0) { item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněna datová schránka smluvní strany", "", "item.Prijemce[" + i.ToString() + "].datovaSchranka", "", f.DatovaSchranka[0], this)); } } else { //malinko uprav nazev, zrus koncovku aposledni carku string modifNazev = Lib.Data.Firma.JmenoBezKoncovky(ss.nazev); f = Lib.Data.Firma.FromName(modifNazev, true); if (Firma.IsValid(f)) { item.Prijemce[i].ico = f.ICO; item.Prijemce[i].datovaSchranka = f.DatovaSchranka.Length > 0 ? f.DatovaSchranka[0] : ""; item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněno IČO subjektu", "", "item.Prijemce[" + i.ToString() + "].ico", "", f.ICO, this)); if (f.DatovaSchranka.Length > 0) { item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněna datová schránka subjektu", "", "item.Prijemce[" + i.ToString() + "].datovaSchranka", "", f.DatovaSchranka[0], this)); } } } } } if (string.IsNullOrEmpty(ss.nazev) && !string.IsNullOrEmpty(ss.ico)) { //dopln chybejici jmeno a adresu HlidacStatu.Lib.Data.Firma f = HlidacStatu.Lib.Data.Firma.FromIco(ss.ico, true); if (Firma.IsValid(f)) { item.Prijemce[i].nazev = f.Jmeno; item.Enhancements = item.Enhancements.AddOrUpdate(new Enhancement("Doplněn název subjektu", "", "Platce.Prijemce[" + i.ToString() + "].nazev", "", f.Jmeno, this)); } } } }
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 )); } } }