public KUId(KU ku) { if (ku == null) { throw new ArgumentNullException(nameof(ku)); } var typ = ku.GetType().Name; if (!(typ.StartsWith("KU") && typ.Substring(2).All(char.IsDigit))) { throw new ArgumentException("Felaktig KU-typ", nameof(ku)); } var data = ku.Data; var uppgiftslamnarId = data.GetValueOrDefault <string>(Fältkod.UppgiftslamnarId); var inkomstar = data.GetValueOrDefault <int>(Fältkod.Inkomstar); var inkomsttagare = data.GetValueOrDefault <string>(Fältkod.Inkomsttagare); var fodelsetid = data.GetValueOrDefault <string>(Fältkod.Fodelsetid); var annatIDNr = data.GetValueOrDefault <string>(Fältkod.AnnatIDNr); var specifikationsnummer = data.GetValueOrDefault <long>(Fältkod.Specifikationsnummer); this.Typ = typ; this.UppgiftslamnarId = uppgiftslamnarId; this.Inkomstar = inkomstar; this.Inkomsttagare = inkomsttagare; this.Fodelsetid = fodelsetid; this.AnnatIDNr = annatIDNr; this.Specifikationsnummer = specifikationsnummer; this.IsComplete = HasId(data); }
public static void Sambandskontroll085(KU ku) { var d = ku.Data; if (!d.Contains(Fältkod.VPNamn) && !d.Contains(Fältkod.ISIN) && !d.Contains(Fältkod.Borttag)) { throw new InvalidOperationException("Du har inte angett något ISIN, fält 572. Då ska du fylla i Namn på aktien/andelen, fält 571"); } }
public static void Sambandskontroll070(KU ku) { var d = ku.Data; if (!d.Contains(Fältkod.Ranteinkomst) && !d.Contains(Fältkod.Borttag) && !d.Contains(Fältkod.AvdragenSkatt) && !d.Contains(Fältkod.RanteinkomstEjKonto) && !d.Contains(Fältkod.AnnanInkomst)) { throw new InvalidOperationException("FK500 måste finnas om FK205, FK001, FK503 och FK504 saknas."); } }
public static void Borttag(KU ku) { // FK205 får bara finnas om alla fältkoder // förutom FK201, FK203, FK570, FK215, FK222 och FK224 är tomma. foreach (var f in ku.Data.ToList()) { if (!KUId.Identifikatorer.Contains(f.Key)) { ku.Data.Remove(f.Key); } } ku.Data.AddOrUpdateValue(Fältkod.Borttag, true); }
public static void Validate(KU ku) { foreach (var item in ku.Data) { if (item.HasValue) { try { FältHelper.Validate(item.Key, item.Value); } catch (Exception ex) { throw new InvalidOperationException($"KUxx innehåller felaktiga uppgifter", ex); } } } }
public static void Sambandskontroll(KU ku) { if (ku is KU20) { Sambandskontroll070(ku); return; } if (ku is KU31) { Sambandskontroll085(ku); return; } if (ku is KU32) { Sambandskontroll085(ku); return; } }