Пример #1
0
        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);
        }
Пример #2
0
        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");
            }
        }
Пример #3
0
        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.");
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
 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);
             }
         }
     }
 }
Пример #6
0
 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;
     }
 }