public void Entferne(Abrechnung abrechnung, Einkauf einkauf)
 {
     abrechnung.Einkäufe.Remove(einkauf);
     einkauf.Abrechnung = null;
     BearbeiteAbrechnung(abrechnung);
     Einkaufsteuerung.BearbeiteEinkauf(einkauf);
 }
예제 #2
0
        public void BearbeitePosition(Einkaufsposition position)
        {
            if (!Einkaufsteuerung.IstLöschbar(position.Einkauf))
            {
                throw new InvalidOperationException("Die Position dieses Einkaufs kann nicht mehr bearbeitet werden.");
            }

            Kontext.SaveChanges();
            EinkaufspositionVerändert?.Invoke(position);
        }
예제 #3
0
        public void LöschePosition(Einkaufsposition position, bool erzwinge = false)
        {
            if (!erzwinge && !Einkaufsteuerung.IstLöschbar(position.Einkauf))
            {
                throw new InvalidOperationException("Aus diesem Einkauf kann keine Position mehr gelöscht werden.");
            }

            Kontext.Einkaufspositionen.Remove(position); // Nebeneffekt: Wird aus Einkauf gelöscht
            Kontext.SaveChanges();
            EinkaufspositionGelöscht?.Invoke(position);
        }
 public void FügeHinzu(Abrechnung abrechnung, Einkauf einkauf)
 {
     using (var transaktion = Kontext.Database.BeginOrReuseTransaction())
     {
         abrechnung.Einkäufe.Add(einkauf);
         einkauf.Abrechnung = abrechnung;
         FügeHinzu(abrechnung, einkauf.Positionen.Select(p => p.Kastengröße.Produkt).Distinct().ToList());
         BearbeiteAbrechnung(abrechnung);
         Einkaufsteuerung.BearbeiteEinkauf(einkauf);
         transaktion?.Commit();
     }
 }
예제 #5
0
        public void LöschePositionen(ICollection <Einkaufsposition> positionen, bool erzwinge = false)
        {
            if (!erzwinge && positionen.Any(p => !Einkaufsteuerung.IstLöschbar(p.Einkauf)))
            {
                throw new InvalidOperationException("Aus diesem Einkauf kann keine Position mehr gelöscht werden.");
            }

            Kontext.Einkaufspositionen.RemoveRange(positionen);
            Kontext.SaveChanges();
            foreach (var position in positionen)
            {
                EinkaufspositionGelöscht?.Invoke(position);
            }
        }
        public void Entferne(Abrechnung abrechnung, ICollection <Einkauf> einkäufe)
        {
            using (var transaktion = Kontext.Database.BeginOrReuseTransaction())
            {
                foreach (var einkauf in einkäufe)
                {
                    abrechnung.Einkäufe.Remove(einkauf);
                    einkauf.Abrechnung = null;
                    Einkaufsteuerung.BearbeiteEinkauf(einkauf);
                }
                BearbeiteAbrechnung(abrechnung);

                transaktion?.Commit();
            }
        }
 public Datenbanksteuerung() : base(null)
 {
     kontext = null;
     abrechnungssteuerung       = new Abrechnungssteuerung(this);
     benutzersteuerung          = new Benutzersteuerung(this);
     einkaufsteuerung           = new Einkaufsteuerung(this);
     einkaufspositionssteuerung = new Einkaufspositionssteuerung(this);
     kastengrößensteuerung      = new Kastengrößensteuerung(this);
     kontosteuerung             = new Kontosteuerung(this);
     produktsteuerung           = new Produktsteuerung(this);
     überweisungssteuerung      = new Überweisungssteuerung(this);
     verbrauchsteuerung         = new Verbrauchsteuerung(this);
     verkaufsproduktsteuerung   = new Verkaufsproduktsteuerung(this);
     zahlungssteuerung          = new Zahlungssteuerung(this);
 }
        public void FügeHinzu(Abrechnung abrechnung, ICollection <Einkauf> einkäufe)
        {
            using (var transaktion = Kontext.Database.BeginOrReuseTransaction())
            {
                abrechnung.Einkäufe.AddRange(einkäufe);

                foreach (var einkauf in einkäufe)
                {
                    einkauf.Abrechnung = abrechnung;
                    Einkaufsteuerung.BearbeiteEinkauf(einkauf);
                }
                FügeHinzu(abrechnung, einkäufe.SelectMany(e => e.Positionen).Select(p => p.Kastengröße.Produkt).Distinct().ToList());
                BearbeiteAbrechnung(abrechnung);

                transaktion?.Commit();
            }
        }
예제 #9
0
        public void NeuePosition(Einkaufsposition position, Einkauf einkauf)
        {
            if (!Einkaufsteuerung.IstLöschbar(einkauf))
            {
                throw new InvalidOperationException("Zu diesem Einkauf kann keine Position mehr hinzugefügt werden.");
            }

            position.Einkauf = einkauf;
            einkauf.Positionen.Add(position);
            if (einkauf.Abrechnung != null && !einkauf.Abrechnung.Produkte.Contains(position.Kastengröße.Produkt))
            {
                Abrechnungssteuerung.FügeHinzu(einkauf.Abrechnung, position.Kastengröße.Produkt);
            }

            Kontext.SaveChanges();
            EinkaufspositionHinzugefügt?.Invoke(position);
        }