public void LöscheEinkauf(Einkauf einkauf)
        {
            if (!IstLöschbar(einkauf))
            {
                throw new InvalidOperationException("Dieser Einkauf ist nicht löschbar, er ist Teil einer schon abgerechneten Abrechnung.");
            }

            using (var transaktion = Kontext.Database.BeginOrReuseTransaction())
            {
                if (einkauf.Abrechnung != null)
                {
                    Abrechnungssteuerung.Entferne(einkauf.Abrechnung, einkauf);
                }

                Einkaufspositionssteuerung.LöschePositionen(einkauf.Positionen.ToList(), erzwinge: true);

                var überweisung = einkauf.Überweisung;
                Überweisungssteuerung.StorniereÜberweisung(überweisung, erzwinge: true);
                einkauf.Überweisung = null;

                Kontext.Einkäufe.Remove(einkauf);
                Kontext.SaveChanges();
                transaktion?.Commit();
            }
            EinkaufGelöscht?.Invoke(einkauf);
        }
 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);
 }
Пример #3
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);
        }