/// <summary>
        /// ein Rechnungsdetail einer Firma wird herausgesucht
        /// </summary>
        /// <param name="buchungsDetail_id"></param>
        /// <returns></returns>
        public static Rechnungsdetails EinRechnungsDetailsEinesBuchungsDetails(int buchungsDetail_id)
        {
            Rechnungsdetails detail = null;

            log.Info("RechnungsVerwaltung - AlleRechnungsDetailsEinerBuchung");
            if (buchungsDetail_id != 0)
            {
                try
                {
                    using (var context = new Innovation4AustriaEntities())
                    {
                        {
                            detail = context.AlleRechnungsdetails.Where(x => x.Buchungsdetail_Id == buchungsDetail_id).FirstOrDefault();
                            if (detail == null)
                            {
                                log.Warn("RechnungsVerwaltung - AlleRechnungsDetailsEinerBuchung - es wurden keine Rechnungsdetails zu der Buchung gefunden");
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    log.Error("RechnungsVerwaltung - AlleRechnungsDetailsEinerBuchung - es konnte keine Datenbankverbindung hergestellt werden", ex);
                    if (ex.InnerException != null)
                    {
                        log.Info(ex.InnerException);
                    }
                }
            }
            return(detail);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="BgDetails"></param>
        /// <returns></returns>
        public static Rechnung LiefereRechnungzuFirmaAusMonat(List <Buchungsdetails> BgDetails)
        {
            log.Info("Rechnungsverwaltung - LiefereRechnungzuFirmaAusMonat");
            Rechnung rechnung = new Rechnung();
            List <Rechnungsdetails> RgDetails = new List <Rechnungsdetails>();

            try
            {
                using (var context = new Innovation4AustriaEntities())
                {
                    foreach (var buchungsdetail in BgDetails)
                    {
                        Rechnungsdetails RgDetail = context.AlleRechnungsdetails.Where(x => x.Buchungsdetail_Id == buchungsdetail.Id).FirstOrDefault();
                        if (rechnung != null)
                        {
                            rechnung = context.AlleRechnungen.Where(x => x.Id == RgDetail.Rechnung_Id).FirstOrDefault();
                        }
                        RgDetails.Add(RgDetail);
                    }
                }
            }
            catch (Exception ex)
            {
                throw;
            }
            return(rechnung);
        }
        public static Rechnungsdetails RGDetailZuBuchung(int id)
        {
            Rechnungsdetails RGDeatailZuBuchungsdeatil = new Rechnungsdetails();

            try
            {
                using (var context = new Innovation4AustriaEntities())
                {
                    RGDeatailZuBuchungsdeatil = context.AlleRechnungsdetails.Where(x => x.Buchungsdetail_Id == id).FirstOrDefault();
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(RGDeatailZuBuchungsdeatil);
        }
        public static void ErstelleRechnungenFuerMonat(int monat, int jahr)
        {
            log.Info("RechnungsVerwaltung - ErstelleRechnungenFuerMonat");
            List <Buchungsdetails> buchungsDetailsFuerMonat = new List <Buchungsdetails>();

            try
            {
                using (var context = new Innovation4AustriaEntities())
                {
                    buchungsDetailsFuerMonat = context.AlleBuchungsdetails.Where(x => x.Datum.Year == jahr && x.Datum.Month == monat && x.Buchung.Aktiv).ToList();
                    foreach (var buchungsDetail in buchungsDetailsFuerMonat)
                    {
                        List <Buchungsdetails> buchungsDetailsZuFirma = new List <Buchungsdetails>();
                        buchungsDetailsZuFirma = buchungsDetailsFuerMonat.Where(x => x.Buchung.Firma_id == buchungsDetail.Buchung.Firma_id).ToList();
                        Rechnung neueRechnung = new Rechnung();
                        neueRechnung.Datum = DateTime.Now;
                        neueRechnung.fa_id = buchungsDetail.Buchung.Firma_id;
                        context.AlleRechnungen.Add(neueRechnung);
                        context.SaveChanges();
                        foreach (var buchungsDetaileinesMonats in buchungsDetailsZuFirma)
                        {
                            Rechnungsdetails DetailZuFirma = new Rechnungsdetails();
                            DetailZuFirma.Buchungsdetail_Id = buchungsDetaileinesMonats.Id;
                            DetailZuFirma.Rechnung_Id       = neueRechnung.Id;
                            context.AlleRechnungsdetails.Add(DetailZuFirma);
                        }
                    }
                    context.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                log.Error("RechnugnsVerwaltung - ErstelleRechnungenFuerMonat - DB_Verbindung fehlgeschlagen");
                if (ex.InnerException != null)
                {
                    log.Info(ex.InnerException);
                }
            }
        }