internal void Init(IWWVBL wwvBLComp, JahresDatenData currentJahresData, KundenData currentKunde) {
     this.wwvBLComp = wwvBLComp;
     this.currentKunde = currentKunde;
     this.currentJahresData = currentJahresData;
     this.fillDataFromCurrentJahresData();
     if (this.currentJahresData.Id == 0) {
         this.changed = true;
         this.textBoxNichtGespeichert.Visible = this.changed;
     }
     this.buttonDruckJahresrechnung.Enabled = !this.changed;
 }
        private void buttonSpeichern_Click(object sender, EventArgs e) {
            if (!checkFields())
                return;

            if ((currentJahresData.RechnungsNummerJahr != null && !String.IsNullOrEmpty(textBoxGanzJahresRechnungsNummer.Text) && currentJahresData.RechnungsNummerJahr != Int64.Parse(textBoxGanzJahresRechnungsNummer.Text))
                || (String.IsNullOrEmpty(textBoxGanzJahresRechnungsNummer.Text) && currentJahresData.RechnungsNummerJahr != null)) {
                DialogResult dr = MessageBox.Show("Die Ganzjahres Rechnungsnummer wurde geändert. Wollen sie das wirklich?", "Achtung", MessageBoxButtons.OKCancel);
                if (!(dr == DialogResult.OK)) {
                    return;
                }
            }

            if (!String.IsNullOrEmpty(textBoxGanzJahresRechnungsNummer.Text) && currentJahresData.RechnungsNummerJahr != Int64.Parse(textBoxGanzJahresRechnungsNummer.Text)) {
                if (wwvBLComp.ExistsRechnungsnummer(long.Parse(textBoxGanzJahresRechnungsNummer.Text), currentJahresData.Jahr))
                {
                    MessageBox.Show("Die Ganzjahres Rechnungsnummer existiert bereits! Vorgang Abgebrochen!");
                    return;
                }
            }

            if ((currentJahresData.RechnungsNummerHalbjahr != null && !String.IsNullOrEmpty(textBoxHalbJahresRechnungsNummer.Text) && currentJahresData.RechnungsNummerHalbjahr != Int64.Parse(textBoxHalbJahresRechnungsNummer.Text))
                || (String.IsNullOrEmpty(textBoxHalbJahresRechnungsNummer.Text) && currentJahresData.RechnungsNummerHalbjahr != null))
            {
                DialogResult dr = MessageBox.Show("Die Halbjahres Rechnungsnummer wurde geändert. Wollen sie das wirklich?", "Achtung", MessageBoxButtons.OKCancel);
                if (!(dr == DialogResult.OK))
                {
                    return;
                }
            }

            if (!String.IsNullOrEmpty(textBoxHalbJahresRechnungsNummer.Text) && currentJahresData.RechnungsNummerHalbjahr != Int64.Parse(textBoxHalbJahresRechnungsNummer.Text))
            {
                if (wwvBLComp.ExistsRechnungsnummer(long.Parse(textBoxHalbJahresRechnungsNummer.Text), currentJahresData.Jahr))
                {
                    MessageBox.Show("Die Halbjahres Rechnungsnummer existiert bereits! Vorgang Abgebrochen!");
                    return;
                }
            }

            JahresDatenData jahresdataTemp = new JahresDatenData(this.currentJahresData.Id,
                this.currentJahresData.KundenId,
                Int64.Parse(textBoxZaehlerStandAlt.Text),
                Int64.Parse(textBoxZaehlerStandNeu.Text),
                currentJahresData.Jahr,
                DateTime.Parse(this.textBoxAblesedatum.Text, DateTimeFormatInfo.CurrentInfo),
                Double.Parse(textBoxBereitsbezahlt.Text.Replace(".", ",")),
                long.Parse(textBoxTauschZaehlerstandAlt.Text),
                long.Parse(textBoxTauschZaehlerstandNeu.Text),
                textBoxSonstigeForderungenText.Text,
                Double.Parse(textBoxSonstigeForderungenWert.Text.Replace(".", ",")),
                Double.Parse(textBoxHalbJahresBetrag.Text.Replace(".", ",")),
                rechnungsDatumHalbjahr,
                rechnungsDatumJahr,
                String.IsNullOrEmpty(textBoxHalbJahresRechnungsNummer.Text) ? (long?)null : long.Parse(textBoxHalbJahresRechnungsNummer.Text),
                String.IsNullOrEmpty(textBoxGanzJahresRechnungsNummer.Text) ? (long?)null : long.Parse(textBoxGanzJahresRechnungsNummer.Text)
                );

            if (currentJahresData.Id == 0) { // Neue Jahresdata -> insert
                JahresDatenData jahresdataTemp2 = this.wwvBLComp.InsertJahresDaten(jahresdataTemp);
                if (jahresdataTemp2 == null) {
                    MessageBox.Show("Speichern fehlgeschlagen!");
                    return;
                }
                currentJahresData = jahresdataTemp2;
            } else { // Bestehende Jahresdata -> update
                if (!this.wwvBLComp.UpdateJahresDaten(jahresdataTemp)) {
                    MessageBox.Show("Speichern fehlgeschlagen!");
                    return;
                }
                currentJahresData = jahresdataTemp;
            }
            this.changed = false;
            this.fillDataFromCurrentJahresData();
        }
 public static int CompareJahresdatenByJahr(JahresDatenData x, JahresDatenData y) {
     if (x == null) {
         if (y == null) {
             return 0;
         } else {
             return -1;
         }
     } else {
         if (y == null) {
             return 1;
         } else {
             return x.Jahr.CompareTo(y.Jahr);
         }
     }
 }
示例#4
0
        public void JahresdatenFindByKundenIdTest() {
            IJahresDaten jahredDatenDB = Database.CreateJahresDaten();
            JahresDatenData jd1 = new JahresDatenData(0, 1, 234, 345, 2006, DateTime.Now, 234.9,324,567,"asdfg",2345.7,4356.8,new DateTime(2000,2,2),new DateTime(1999,3,3), null, 4711L);
            JahresDatenData jd2 = new JahresDatenData(0, 1, 234, 3545, 2006, DateTime.Now, 233.9, 76, 987, "sadf", 324.7, 456.7, new DateTime(1990,7,7), new DateTime(1995,5,5), 4711L, null);
            long jdid1 = jahredDatenDB.Insert(jd1);
            long jdid2 = jahredDatenDB.Insert(jd2);
            IList<JahresDatenData> jahresdataList = jahredDatenDB.FindByKundenId(1);
            Assert.IsTrue(jahresdataList.Count >= 2);
            bool jd1exists = false;
            bool jd2exists = false;

            foreach (JahresDatenData jd in jahresdataList) {
                if (jd.Id == jdid1) {
                    jd1exists = !jd1exists;
                    Assert.AreEqual(jd.AbleseDatum.Date, jd1.AbleseDatum.Date);
                    Assert.AreEqual(jd.BereitsBezahlt, jd1.BereitsBezahlt);
                    Assert.AreEqual(jd.Jahr, jd1.Jahr);
                    Assert.AreEqual(jd.KundenId, jd1.KundenId);
                    Assert.AreEqual(jd.ZaehlerStandAlt, jd1.ZaehlerStandAlt);
                    Assert.AreEqual(jd.ZaehlerStandNeu, jd1.ZaehlerStandNeu);
                    Assert.AreEqual(jd.TauschZaehlerStandAlt, jd1.TauschZaehlerStandAlt);
                    Assert.AreEqual(jd.TauschZaehlerStandNeu, jd1.TauschZaehlerStandNeu);
                    Assert.AreEqual(jd.SonstigeForderungenText, jd1.SonstigeForderungenText);
                    Assert.AreEqual(jd.SonstigeForderungenValue, jd1.SonstigeForderungenValue);
                    Assert.AreEqual(jd.HalbJahresBetrag, jd1.HalbJahresBetrag);
                    Assert.AreEqual(jd.RechnungsDatumHalbjahr, jd1.RechnungsDatumHalbjahr);
                    Assert.AreEqual(jd.RechnungsDatumJahr, jd1.RechnungsDatumJahr);
                }
                if (jd.Id == jdid2) {
                    jd2exists = !jd2exists;
                    Assert.AreEqual(jd.AbleseDatum.Date, jd2.AbleseDatum.Date);
                    Assert.AreEqual(jd.BereitsBezahlt, jd2.BereitsBezahlt);
                    Assert.AreEqual(jd.Jahr, jd2.Jahr);
                    Assert.AreEqual(jd.KundenId, jd2.KundenId);
                    Assert.AreEqual(jd.ZaehlerStandAlt, jd2.ZaehlerStandAlt);
                    Assert.AreEqual(jd.ZaehlerStandNeu, jd2.ZaehlerStandNeu);
                    Assert.AreEqual(jd.TauschZaehlerStandAlt, jd2.TauschZaehlerStandAlt);
                    Assert.AreEqual(jd.TauschZaehlerStandNeu, jd2.TauschZaehlerStandNeu);
                    Assert.AreEqual(jd.SonstigeForderungenText, jd2.SonstigeForderungenText);
                    Assert.AreEqual(jd.SonstigeForderungenValue, jd2.SonstigeForderungenValue);
                    Assert.AreEqual(jd.HalbJahresBetrag, jd2.HalbJahresBetrag);
                    Assert.AreEqual(jd.RechnungsDatumHalbjahr, jd2.RechnungsDatumHalbjahr);
                    Assert.AreEqual(jd.RechnungsDatumJahr, jd2.RechnungsDatumJahr);
                }
            }
            Assert.IsTrue(jd1exists && jd2exists);
        }
示例#5
0
 public void InitVisitTest() {
     IJahresDaten jahresDatenDB = Database.CreateJahresDaten();
     jahresdaten = new JahresDatenData(0, 1, 23, 234, 2006, DateTime.Now, 87.0,5,8,"asdf",456.7,1.4,new DateTime(2006,10,10),new DateTime(2005,9,9), 4711L, 1234L);
     this.jdID = jahresDatenDB.Insert(jahresdaten);
 }   
        /*
         * Die Semantik dieses Buttons ist, daß er für ein Jahr alle Kunden 
         * die noch keinen Zählerstandeintrag für das Jahr haben den 
         * Halbjahreszählerstand vom Jahr davor berechnet, (mit Überprüfung, 
         * daß mindestens ein Kunde im Vorjahr einen Eintrag haben muß.) Kunden 
         * die bereits einen Jahreszählerstand eintrag für das JAhr haben werden 
         * ignoriert um einen bestehenden Betrag nicht zu überschreiben. 
         * (Sollte zwar eh der selbe sein, aber du hast ja immer die Möglichkeit 
         * den Betrag anzupassen.) 
         */

        public void GenerateHalbJahresBetragFuerJahr(long jahr) {
            int countKeinenAltenEintrag = 0;
            int countBereitsEinenNeuenEintrag = 0;
            int countEintraegerErstellt = 0;
            int countFehlerBeimEintragen = 0;

            PreisData pd = this.GetPreisDataByJahr(jahr - 1);
            if (pd == null){
                MessageBox.Show("Kein Wasserpreis / m³ fürs Jahr " + (jahr - 1) + " definiert -> bitte zuvor definieren.");
                return;
            }

            foreach (KundenData kunde in this.GetAllKunden()) {
                

                if (this.hasKundeJahresdataByJahr(kunde, jahr)) {
                    countBereitsEinenNeuenEintrag++;
                }

                if (!this.hasKundeJahresdataByJahr(kunde, jahr-1)) {
                    countKeinenAltenEintrag++;
                }

                if (! this.hasKundeJahresdataByJahr(kunde,jahr) &&
                    this.hasKundeJahresdataByJahr(kunde, jahr-1)){

                    // Kunde hat im Vorjahr einen Eintrag und im aktuellen nicht!
                    // Es wird eine neue JahresDatenzeile erstellt in der 
                    // also wird HalbjahresWert eingrtragen

                    double halbjahresbetrag = this.calcJahresrechnungBrutto(this.GetJahresdataByKundenIDandYear(kunde.Id, jahr - 1), kunde, pd);
                    halbjahresbetrag = halbjahresbetrag / 2;
                    halbjahresbetrag = Math.Round(halbjahresbetrag, 2);

                    JahresDatenData jdd = new JahresDatenData(0,
                                                                kunde.Id,
                                                                0,
                                                                0,
                                                                jahr,
                                                                DateTime.MinValue,
                                                                0.0,
                                                                0,
                                                                0,
                                                                "",
                                                                0.0,
                                                                halbjahresbetrag,
                                                                DateTime.MinValue,
                                                                DateTime.MinValue,
                                                                null,
                                                                null);

                    JahresDatenData jdd2 = this.InsertJahresDaten(jdd);

                    if (jdd2 != null) {
                        countEintraegerErstellt++;
                    } else {
                        countFehlerBeimEintragen++;
                    }
                }
                
            }
            MessageBox.Show(countEintraegerErstellt + " Einträge erstellt für das Jahr " + jahr + " auf Basis vom Jahr: " + (jahr - 1) + "\r\n" + countKeinenAltenEintrag + " hatten keinen Eintrag im Jahr " + (jahr - 1) + "\r\n" + countBereitsEinenNeuenEintrag + " hatten bereits einen Eintrag im Jahr " + jahr + "\r\n" + countFehlerBeimEintragen + " Einträge konnten nicht erstellt werden.");
        }
 public double calcJahresRechnungMinusBereitsBezahlt(JahresDatenData jdd, KundenData kunde, PreisData preis) {
     return Math.Round(calcJahresrechnungBrutto(jdd,kunde,preis) - jdd.BereitsBezahlt,2);
 }
 private static JahresDatenData fillJahresDaten(IDataReader rdr)
 {
     JahresDatenData jahresDatenData = new JahresDatenData();
     jahresDatenData.Id = Convert.ToInt64(rdr["JahresDatenID"]);
     jahresDatenData.KundenId = Convert.ToInt64(rdr["KundeID"]);
     jahresDatenData.ZaehlerStandAlt = Convert.ToInt64(rdr["ZaehlerStandAlt"]);
     jahresDatenData.ZaehlerStandNeu = Convert.ToInt64(rdr["ZaehlerStandNeu"]);
     jahresDatenData.Jahr = Convert.ToInt64(rdr["Jahr"]);
     jahresDatenData.AbleseDatum = (DateTime)rdr["Ablesedatum"];
     jahresDatenData.BereitsBezahlt = (double)rdr["BereitsBezahlt"];
     jahresDatenData.TauschZaehlerStandAlt = Convert.ToInt64(rdr["TauschZaehlerStandAlt"]);
     jahresDatenData.TauschZaehlerStandNeu = Convert.ToInt64(rdr["TauschZaehlerStandNeu"]);
     jahresDatenData.SonstigeForderungenText = Convert.ToString(rdr["SonstigeForderungenText"]);
     jahresDatenData.SonstigeForderungenValue = (double)rdr["SonstigeForderungenValue"];
     jahresDatenData.HalbJahresBetrag = (double)rdr["HalbJahresBetrag"];
     jahresDatenData.RechnungsDatumHalbjahr = (DateTime)rdr["RechnungsDatumHalbjahr"];
     jahresDatenData.RechnungsDatumJahr = (DateTime)rdr["RechnungsDatumJahr"];
     jahresDatenData.RechnungsNummerHalbjahr = DBNull.Value.Equals(rdr["RechnungsNummerHalbjahr"]) ? (long?)null : Convert.ToInt64(rdr["RechnungsNummerHalbjahr"]);
     jahresDatenData.RechnungsNummerJahr = DBNull.Value.Equals(rdr["RechnungsNummerJahr"]) ? (long?)null : Convert.ToInt64(rdr["RechnungsNummerJahr"]);
     return jahresDatenData;
 }
 public int calcVerbrauch(JahresDatenData jdd) {
     return (int)(jdd.ZaehlerStandNeu - jdd.ZaehlerStandAlt) + (int)(jdd.TauschZaehlerStandNeu - jdd.TauschZaehlerStandAlt);
 }
 public double calcJahresrechnungBrutto(JahresDatenData jdd, KundenData kunde, PreisData preis) {
     return Math.Round(this.calcJahresrechnungNetto(jdd, kunde, preis) + this.calcMwSt(jdd,kunde,preis), 2);
 }
 public double calcMwSt(JahresDatenData jdd, KundenData kunde, PreisData preis) {
     return Math.Round(calcJahresrechnungNetto(jdd, kunde, preis) * 0.1,2);
 }
 public double calcHalbJahresrechnungMwSt(JahresDatenData jdd) {
     return Math.Round(jdd.HalbJahresBetrag * (0.1 / 1.1), 2);
 }
 public double calcHalbJahresrechnungNetto(JahresDatenData jdd)
 {
     return Math.Round(jdd.HalbJahresBetrag / 1.1, 2);
 }
 public double calcJahresrechnungNetto(JahresDatenData jdd, KundenData kunde, PreisData preis) {
     return Math.Round((((double)this.calcVerbrauch(jdd)) * preis.Preis) + kunde.Zaehlermiete + jdd.SonstigeForderungenValue, 2);
 }
        public bool UpdateJahresDaten(JahresDatenData jahresDatum) {
            IJahresDaten jahresDataDB = Database.CreateJahresDaten();

            if (jahresDataDB.Update(jahresDatum)) {
                if (this.allJahresData != null) {
                    this.allJahresData.Remove(jahresDatum);
                    this.allJahresData.Add(jahresDatum);
                }
                return true;
            } else {
                return false;
            }  
        }
        public bool Update(JahresDatenData jahresDatenData) {
            try {
                DbUtil.OpenConnection();
                Console.WriteLine("Update: " + jahresDatenData.ToString());
                if (updateByIdCmd == null) {
                    updateByIdCmd = DbUtil.CreateCommand(SQL_UPDATE_BY_ID, DbUtil.CurrentConnection);

                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@KundeID", DbType.Int64));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@ZaehlerStandAlt", DbType.Int64));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@ZaehlerStandNeu", DbType.Int64));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@Ablesedatum", DbType.DateTime));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@Jahr", DbType.Int64));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@BereitsBezahlt", DbType.Double));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@TauschZaehlerStandAlt", DbType.Int64));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@TauschZaehlerStandNeu", DbType.Int64));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@SonstigeForderungenText", DbType.String));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@SonstigeForderungenValue", DbType.Double));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@HalbJahresBetrag", DbType.Double));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@RechnungsDatumHalbjahr", DbType.DateTime));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@RechnungsDatumJahr", DbType.DateTime));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@RechnungsNummerHalbjahr", DbType.Int64));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@RechnungsNummerJahr", DbType.Int64));
                    updateByIdCmd.Parameters.Add(DbUtil.CreateParameter("@JahresDatenID", DbType.Int64));
                }

                ((IDataParameter)updateByIdCmd.Parameters["@KundeID"]).Value = jahresDatenData.KundenId;
                ((IDataParameter)updateByIdCmd.Parameters["@ZaehlerStandAlt"]).Value = jahresDatenData.ZaehlerStandAlt;
                ((IDataParameter)updateByIdCmd.Parameters["@ZaehlerStandNeu"]).Value = jahresDatenData.ZaehlerStandNeu;
                ((IDataParameter)updateByIdCmd.Parameters["@Ablesedatum"]).Value = jahresDatenData.AbleseDatum.Date;
                ((IDataParameter)updateByIdCmd.Parameters["@Jahr"]).Value = jahresDatenData.Jahr;
                ((IDataParameter)updateByIdCmd.Parameters["@BereitsBezahlt"]).Value = jahresDatenData.BereitsBezahlt;
                ((IDataParameter)updateByIdCmd.Parameters["@TauschZaehlerStandAlt"]).Value = jahresDatenData.TauschZaehlerStandAlt;
                ((IDataParameter)updateByIdCmd.Parameters["@TauschZaehlerStandNeu"]).Value = jahresDatenData.TauschZaehlerStandNeu;
                ((IDataParameter)updateByIdCmd.Parameters["@SonstigeForderungenText"]).Value = jahresDatenData.SonstigeForderungenText;
                ((IDataParameter)updateByIdCmd.Parameters["@SonstigeForderungenValue"]).Value = jahresDatenData.SonstigeForderungenValue;
                ((IDataParameter)updateByIdCmd.Parameters["@HalbJahresBetrag"]).Value = jahresDatenData.HalbJahresBetrag;
                ((IDataParameter)updateByIdCmd.Parameters["@RechnungsDatumHalbjahr"]).Value = jahresDatenData.RechnungsDatumHalbjahr.Date;
                ((IDataParameter)updateByIdCmd.Parameters["@RechnungsDatumJahr"]).Value = jahresDatenData.RechnungsDatumJahr.Date;

                if (jahresDatenData.RechnungsNummerHalbjahr == null) {
                    ((IDataParameter)updateByIdCmd.Parameters["@RechnungsNummerHalbjahr"]).Value = DBNull.Value;
                } else {
                    ((IDataParameter)updateByIdCmd.Parameters["@RechnungsNummerHalbjahr"]).Value = jahresDatenData.RechnungsNummerHalbjahr;
                }

                if (jahresDatenData.RechnungsNummerJahr == null)
                {
                    ((IDataParameter)updateByIdCmd.Parameters["@RechnungsNummerJahr"]).Value = DBNull.Value;
                }
                else {
                    ((IDataParameter)updateByIdCmd.Parameters["@RechnungsNummerJahr"]).Value = jahresDatenData.RechnungsNummerJahr;
                }
                
                ((IDataParameter)updateByIdCmd.Parameters["@JahresDatenID"]).Value = jahresDatenData.Id;

                return updateByIdCmd.ExecuteNonQuery() == 1;
            } finally {
                DbUtil.CloseConnection();
            }
        }
 public JahresDatenData InsertJahresDaten(JahresDatenData jahresDatum) {
     IJahresDaten jahredDataDB = Database.CreateJahresDaten();
     long jdID = jahredDataDB.Insert(jahresDatum);
     if (jdID > 0) {
         jahresDatum = new JahresDatenData(jdID,
                     jahresDatum.KundenId,
                     jahresDatum.ZaehlerStandAlt,
                     jahresDatum.ZaehlerStandNeu,
                     jahresDatum.Jahr,
                     jahresDatum.AbleseDatum,
                     jahresDatum.BereitsBezahlt,
                     jahresDatum.TauschZaehlerStandAlt,
                     jahresDatum.TauschZaehlerStandNeu,
                     jahresDatum.SonstigeForderungenText,
                     jahresDatum.SonstigeForderungenValue,
                     jahresDatum.HalbJahresBetrag,
                     jahresDatum.RechnungsDatumHalbjahr,
                     jahresDatum.RechnungsDatumJahr,
                     jahresDatum.RechnungsNummerHalbjahr,
                     jahresDatum.RechnungsNummerJahr);
         if (this.allJahresData != null){
             this.allJahresData.Add(jahresDatum);
         }
         return jahresDatum;
     } else {
         return null;
     }
 }
        public long Insert(JahresDatenData jahresDatenData) {
            try {
                DbUtil.OpenConnection();

                if (insertByIdCmd == null) {

                    insertByIdCmd = DbUtil.CreateCommand(SQL_INSERT_BY_ID, DbUtil.CurrentConnection);
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@KundeID", DbType.Int64));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@ZaehlerStandAlt", DbType.Int64));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@ZaehlerStandNeu", DbType.Int64));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@Ablesedatum", DbType.DateTime));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@Jahr", DbType.Int64));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@BereitsBezahlt", DbType.Double));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@TauschZaehlerStandAlt", DbType.Int64));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@TauschZaehlerStandNeu", DbType.Int64));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@SonstigeForderungenText", DbType.String));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@SonstigeForderungenValue", DbType.Double));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@HalbJahresBetrag", DbType.Double));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@RechnungsDatumHalbjahr", DbType.DateTime));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@RechnungsDatumJahr", DbType.DateTime));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@RechnungsNummerHalbjahr", DbType.Int64));
                    insertByIdCmd.Parameters.Add(DbUtil.CreateParameter("@RechnungsNummerJahr", DbType.Int64));

                }

                ((IDataParameter)insertByIdCmd.Parameters["@KundeID"]).Value = jahresDatenData.KundenId;
                ((IDataParameter)insertByIdCmd.Parameters["@ZaehlerStandAlt"]).Value = jahresDatenData.ZaehlerStandAlt;
                ((IDataParameter)insertByIdCmd.Parameters["@ZaehlerStandNeu"]).Value = jahresDatenData.ZaehlerStandNeu;
                ((IDataParameter)insertByIdCmd.Parameters["@Ablesedatum"]).Value = jahresDatenData.AbleseDatum.Date;
                ((IDataParameter)insertByIdCmd.Parameters["@Jahr"]).Value = jahresDatenData.Jahr;
                ((IDataParameter)insertByIdCmd.Parameters["@BereitsBezahlt"]).Value = jahresDatenData.BereitsBezahlt;
                ((IDataParameter)insertByIdCmd.Parameters["@TauschZaehlerStandAlt"]).Value = jahresDatenData.TauschZaehlerStandAlt;
                ((IDataParameter)insertByIdCmd.Parameters["@TauschZaehlerStandNeu"]).Value = jahresDatenData.TauschZaehlerStandNeu;
                ((IDataParameter)insertByIdCmd.Parameters["@SonstigeForderungenText"]).Value = jahresDatenData.SonstigeForderungenText;
                ((IDataParameter)insertByIdCmd.Parameters["@SonstigeForderungenValue"]).Value = jahresDatenData.SonstigeForderungenValue;
                ((IDataParameter)insertByIdCmd.Parameters["@HalbJahresBetrag"]).Value = jahresDatenData.HalbJahresBetrag;
                ((IDataParameter)insertByIdCmd.Parameters["@RechnungsDatumHalbjahr"]).Value = jahresDatenData.RechnungsDatumHalbjahr.Date;
                ((IDataParameter)insertByIdCmd.Parameters["@RechnungsDatumJahr"]).Value = jahresDatenData.RechnungsDatumJahr.Date;
                if (jahresDatenData.RechnungsNummerHalbjahr == null) {
                    ((IDataParameter)insertByIdCmd.Parameters["@RechnungsNummerHalbjahr"]).Value = DBNull.Value;
                    
                } else {
                    ((IDataParameter)insertByIdCmd.Parameters["@RechnungsNummerHalbjahr"]).Value = jahresDatenData.RechnungsNummerHalbjahr;
                }

                if (jahresDatenData.RechnungsNummerJahr == null) {
                    ((IDataParameter)insertByIdCmd.Parameters["@RechnungsNummerJahr"]).Value = DBNull.Value;
                } else {
                    ((IDataParameter)insertByIdCmd.Parameters["@RechnungsNummerJahr"]).Value = jahresDatenData.RechnungsNummerJahr;
                }
                
                if (insertByIdCmd.ExecuteNonQuery() != 1)
                
                    return 0;
                else {
                    if (lastInsertedRowCmd == null) {
                        lastInsertedRowCmd = DbUtil.CreateCommand(SQL_LAST_INSERTED_ROW, DbUtil.CurrentConnection);
                    }
                    return (long)(int)lastInsertedRowCmd.ExecuteScalar();
                }
            } finally {
                DbUtil.CloseConnection();
            }
        }
        private void jahrHinzufuegen(long currentJahr) {
            PreisData preis = this.wwvBLComp.GetPreisDataByJahr(currentJahr);
            if (preis == null)
            {
                MessageBox.Show("Für das Jahr ist noch kein Preis festgelegt!");
                PreisForm pf = new PreisForm();
                pf.Init(currentJahr);
                pf.ShowDialog();
                if (!pf.OK)
                {
                    MessageBox.Show("Kein Preis für das Jahr festgelegt speichern abgebrochen!");
                    return;
                }
                preis = new PreisData(currentJahr, pf.Preis);

                wwvBLComp.InsertPreis(preis);
                preis = new PreisData(currentJahr, pf.Preis);
                if (preis == null)
                {
                    MessageBox.Show("Preis konnte nicht erstellt werden!");
                    return;
                }
            }

            JahresDatenData jddOld = this.wwvBLComp.GetJahresdataByKundenIDandYear(currentKunde.Id, currentJahr);
            if (jddOld != null) {
                MessageBox.Show("Für das Jahr " + currentJahr + " und den Kunden " + currentKunde.Vorname + " " + currentKunde.Nachname + " ist bereits ein Jahr angelegt!");
                return;
            }

            foreach (ZaehlerStandElementControl zscLoop in zaehlerStandElementControlList) {
                if (zscLoop.Jahr == currentJahr) {
                    MessageBox.Show("Für das Jahr " + currentJahr + " und den Kunden " + currentKunde.Vorname + " " + currentKunde.Nachname + " ist bereits ein Jahr hinzugefügt!\r\nBitte speicherm!!");
                    return;
                }
            }

            JahresDatenData jahresDatenData = new JahresDatenData(0, currentKunde.Id, 0, 0, currentJahr, DateTime.Now, 0.0, 0, 0, "", 0.0, 0.0, new DateTime(1901, 1, 1), new DateTime(1901, 1, 1), null, null);  // FIXME TODO
            jahresDataList.Add(jahresDatenData);

            foreach (ZaehlerStandElementControl zsecl in zaehlerStandElementControlList)
            {
                this.Controls.Remove(zsecl);
            }

            ZaehlerStandElementControl zsc = new ZaehlerStandElementControl();
            zsc.Init(this.wwvBLComp, jahresDatenData, currentKunde);
            zaehlerStandElementControlList.Add(zsc);

            this.placeZaehlerStandElementControl();
        }