private void itemMarkPos_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; using (var dbContext = new DataBaseDataContext()) { // Aktuelles Angebotsobjekt aus DB ermitteln. var angebot = dbContext.Angebot.Where(ang => ang.AngebotID.Equals(int.Parse(tbxAngNummer.Text))).FirstOrDefault(); // Auftragsobjekt anlegen und mit Daten des Angebots füllen. (Außer Gesamtbetrag) var auftrag = new DB.Auftrag { Datum = DateTime.Today, Typ = angebot.Typ, BV = angebot.BV, BV2 = angebot.BV2, Zahlungsbedingung = angebot.Zahlungsbedingung, Betreff = angebot.Betreff, Nachlass = angebot.Nachlass, NachlassArt = angebot.NachlassArt, Steuer = angebot.Steuer, Aufmaß = angebot.Aufmaß, Anfahrt = angebot.Anfahrt, Sondertext = angebot.Sondertext, SondertextUnten = angebot.SondertextUnten, KundeID = angebot.KundeID, Empfänger = angebot.Empfänger, VorgabedatumRechnung = dateAngVorgabeRech.Value.Date != DateTime.Today.Date ? dateAngVorgabeRech.Value.Date : (DateTime?)null }; try { // Auftrag in DB speichern. dbContext.Auftrag.InsertOnSubmit(auftrag); dbContext.SubmitChanges(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } decimal sum = 0.0m; foreach (DataGridViewRow row in dgrPositionen.Rows) { // Nur alle gecheckten Positionen berücksichtigen. var cell = row.Cells[Const.CheckColumHeaderName] as DataGridViewCheckBoxCell; if (cell.Value != null) { // Aktuelle, gecheckte Angebotsposition im FOREACH-Durchlauf aus DB auslesen. var angebotPosition = dbContext.Angebot_Position.Where(ap => ap.PosID.Equals(row.Cells["PosID"].Value)).FirstOrDefault(); // Neue Auftragsposition anlegen und mit Daten aus Angebotsposition füllen. var auftragPosition = new Auftrag_Position { AuftragID = auftrag.AuftragID, Artikel = angebotPosition.Artikel, Sondertext = angebotPosition.Sondertext, Typ = angebotPosition.Typ, AnlagenStk = angebotPosition.AnlagenStk, Breite = angebotPosition.Breite, Tiefe = angebotPosition.Tiefe, Türen = angebotPosition.Türen, TW = angebotPosition.TW, ZuschlagTür = angebotPosition.ZuschlagTür, Einzelpreis = angebotPosition.Einzelpreis, Zuschlag = angebotPosition.Zuschlag, ZuschlagArt = angebotPosition.ZuschlagArt, Alupulver = angebotPosition.Alupulver, Montage = angebotPosition.Montage, AussparungStk = angebotPosition.AussparungStk, AussparungTxt = angebotPosition.AussparungTxt, Alternativ1Typ = angebotPosition.Alternativ1Typ, Alternativ1Preis = angebotPosition.Alternativ1Preis, Alternativ2Typ = angebotPosition.Alternativ2Typ, Alternativ2Preis = angebotPosition.Alternativ2Preis, SondertextOben = angebotPosition.SondertextOben, Oberlicht = angebotPosition.Oberlicht, SonderartikelEinheit = angebotPosition.SonderartikelEinheit }; // Increment Gesamtsumme. sum += auftragPosition.Einzelpreis * auftragPosition.AnlagenStk; sum += auftragPosition.Alupulver * auftragPosition.AnlagenStk; try { // Auftragsposition in DB speichern. dbContext.Auftrag_Position.InsertOnSubmit(auftragPosition); // Angebotsposition auf Auftrag referenzieren. angebotPosition.AuftragID = auftrag.AuftragID; //dbContext.SubmitChanges(); dbContext.SubmitChanges(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } } try { // Von der Gesamtsumme der Positionen den Nachlass abziehen. if (Func.IsNumeric(tbxNachlass.Text, true) & tbxNachlass.Text != "" & cobNachlass.SelectedIndex == 0) // Prozent { sum = sum - (sum * decimal.Parse(tbxNachlass.Text) / 100); } else if (Func.IsNumeric(tbxNachlass.Text, true) & tbxNachlass.Text != "") { sum = sum - decimal.Parse(tbxNachlass.Text); } // Zu der Gesamtsumme der Positionen die MwSt hinzurechnen. //if (cobMwSt.SelectedIndex == 0) //{ // sum = sum * 0.19m + sum; //} sum = sum * (Decimal)cobMwSt.SelectedValue + sum; // Auftrag mit Gesamtbetrag updaten. auftrag.Gesamtbetrag = sum; dbContext.SubmitChanges(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } // Refresh Angebotspositionen Func.FAngebot.dgrPositionen.DataSource = Func.LoadAngebotPositionenUebersicht(); //GeneratePosNr(); btnEdit.Enabled = false; // itemPosNeu.Enabled = false; itemPosEdit.Enabled = false; itemPosDelete.Enabled = false; selectedRows = 0; this.Cursor = Cursors.Default; }
partial void DeleteAuftrag_Position(Auftrag_Position instance);
/// <summary> /// Diese Methode erstellt einen Auftrag über alle Angebotspositionen, zu denen noch kein Auftrag exisitiert. /// </summary> private Auftrag CreateOrderForOfferPositionsWithoutOrderID() { Auftrag auftrag; using (var dbContext = new DataBaseDataContext()) { var angebot = dbContext.Angebot.Where(ang => ang.AngebotID.Equals(int.Parse(tbxAngNummer.Text))).FirstOrDefault(); auftrag = new Auftrag { Datum = DateTime.Today, Typ = angebot.Typ, BV = angebot.BV, BV2 = angebot.BV2, Zahlungsbedingung = angebot.Zahlungsbedingung, Betreff = angebot.Betreff, Nachlass = angebot.Nachlass, NachlassArt = angebot.NachlassArt, Steuer = angebot.Steuer, Aufmaß = angebot.Aufmaß, Anfahrt = angebot.Anfahrt, Sondertext = angebot.Sondertext, SondertextUnten = angebot.SondertextUnten, KundeID = angebot.KundeID, //Gesamtbetrag = angebot.Gesamtbetrag, Empfänger = angebot.Empfänger, VorgabedatumRechnung = dateAngVorgabeRech.Value.Date != DateTime.Today.Date ? dateAngVorgabeRech.Value.Date : (DateTime?)null }; try { dbContext.Auftrag.InsertOnSubmit(auftrag); dbContext.SubmitChanges(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } decimal sum = 0.0m; foreach (DataGridViewRow row in dgrPositionen.Rows) { // Es werden nur AngebotsPositionen berücksichtigt, die noch keinem Auftrag zugeordnet wurden. if (row.Cells["AuftragID"].Value == null) { var angebotPosition = dbContext.Angebot_Position.Where(ap => ap.PosID.Equals(row.Cells["PosID"].Value)).FirstOrDefault(); var auftragPosition = new Auftrag_Position { AuftragID = auftrag.AuftragID, Artikel = angebotPosition.Artikel, Sondertext = angebotPosition.Sondertext, Typ = angebotPosition.Typ, AnlagenStk = angebotPosition.AnlagenStk, Breite = angebotPosition.Breite, Tiefe = angebotPosition.Tiefe, Türen = angebotPosition.Türen, TW = angebotPosition.TW, ZuschlagTür = angebotPosition.ZuschlagTür, Einzelpreis = angebotPosition.Einzelpreis, Zuschlag = angebotPosition.Zuschlag, ZuschlagArt = angebotPosition.ZuschlagArt, Alupulver = angebotPosition.Alupulver, Montage = angebotPosition.Montage, AussparungStk = angebotPosition.AussparungStk, AussparungTxt = angebotPosition.AussparungTxt, Alternativ1Typ = angebotPosition.Alternativ1Typ, Alternativ1Preis = angebotPosition.Alternativ1Preis, Alternativ2Typ = angebotPosition.Alternativ2Typ, Alternativ2Preis = angebotPosition.Alternativ2Preis, SondertextOben = angebotPosition.SondertextOben, Oberlicht = angebotPosition.Oberlicht, SonderartikelEinheit = angebotPosition.SonderartikelEinheit }; // Increment Gesamtsumme. sum += auftragPosition.Einzelpreis * auftragPosition.AnlagenStk; sum += auftragPosition.Alupulver * auftragPosition.AnlagenStk; try { // Auftragsposition in DB speichern dbContext.Auftrag_Position.InsertOnSubmit(auftragPosition); dbContext.SubmitChanges(); // Auftragsposition auf Auftrag referenzieren. angebotPosition.AuftragID = auftrag.AuftragID; //dbContext.SubmitChanges(); dbContext.SubmitChanges(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } } try { // Von der Gesamtsumme der Positionen den Nachlass abziehen. if (Func.IsNumeric(tbxNachlass.Text, true) & tbxNachlass.Text != "" & cobNachlass.SelectedIndex == 0) // Prozent { sum = sum - (sum * decimal.Parse(tbxNachlass.Text) / 100); } else if (Func.IsNumeric(tbxNachlass.Text, true) & tbxNachlass.Text != "") { sum = sum - decimal.Parse(tbxNachlass.Text); } // Zu der Gesamtsumme der Positionen die MwSt hinzurechnen. //if (cobMwSt.SelectedIndex == 0) //{ // sum = sum * 0.19m + sum; //} sum = sum * (Decimal)cobMwSt.SelectedValue + sum; // Auftrag mit Gesamtbetrag updaten. auftrag.Gesamtbetrag = sum; dbContext.SubmitChanges(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } btnEdit.Enabled = false; itemPosNeu.Enabled = false; itemPosEdit.Enabled = false; itemPosDelete.Enabled = false; // Positionsgrid aktualisieren Func.FAngebot.dgrPositionen.DataSource = Func.LoadAngebotPositionenUebersicht(); //GeneratePosNr(); selectedRows = 0; return auftrag; }
partial void InsertAuftrag_Position(Auftrag_Position instance);
partial void UpdateAuftrag_Position(Auftrag_Position instance);
private void detach_Auftrag_Position(Auftrag_Position entity) { this.SendPropertyChanging(); entity.Rechnung = null; }
private void attach_Auftrag_Position(Auftrag_Position entity) { this.SendPropertyChanging(); entity.Auftrag = this; }
private void AuftragPosAnlegen() { if (rdbAussparung.Checked) { tbxEinzelVK.Text = tbxAussparungenPreis.Text; } using (DataBaseDataContext dbContext = new DataBaseDataContext()) { Auftrag_Position ap = new Auftrag_Position(); FillAuftragPositionWithValues(ref ap, cbxAlternativ1.Checked, cbxAlternativ2.Checked); try { dbContext.Auftrag_Position.InsertOnSubmit(ap); dbContext.SubmitChanges(); Func.FAuftrag.dgrPositionen.Columns.Clear(); Func.FAuftrag.dgrPositionen.Columns.Add(new DataGridViewCheckBoxColumn() { HeaderText = Const.CheckColumHeaderName, Name = Const.CheckColumHeaderName, ThreeState = false }); Func.FAuftrag.dgrPositionen.Columns.Add(new DataGridViewColumn { CellTemplate = new DataGridViewTextBoxCell(), HeaderText = Const.PosNrHeaderName, Name = Const.PosNrHeaderName, Visible = true }); Func.FAuftrag.dgrPositionen.DataSource = Func.LoadAuftragPositionenUebersicht(); Func.FAuftrag.ColorizeZuschlagColumn(); Func.FAuftrag.ColorizeTypColumn(); Func.FAuftrag.GeneratePosNr(); Func.FAuftrag.DisableSortmode(); Func.FAuftrag.dgrPositionen.Columns["PosID"].Visible = false; Func.FAuftrag.dgrPositionen.Columns["AuftragID"].Visible = false; Func.FAuftrag.dgrPositionen.Columns["Auftrag"].Visible = false; Func.FAuftrag.dgrPositionen.Columns["Rechnung"].Visible = false; Func.FAuftrag.dgrPositionen.Columns["RechnungID"].Visible = true; k = null; k = new Kalkulation(); Func.FAuftragPosition.ClearEingabefelder(); Func.LoadAuftragSumme(); var auftrag = dbContext.Auftrag.Where(a => a.AuftragID.Equals(int.Parse(auftragsNr))).FirstOrDefault(); auftrag.Gesamtbetrag = Decimal.Parse(Func.FAuftrag.lblAufGesamt.Text); dbContext.SubmitChanges(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } btnPosAnlegen.Enabled = false; }
/// <summary> /// Fills the position with values. /// </summary> /// <param name="ap">The ap.</param> /// <param name="isAlternative1Checked">if set to <c>true</c> [is alternative1 checked].</param> /// <param name="isAlternative2Checked">if set to <c>true</c> [is alternative2 checked].</param> private void FillAuftragPositionWithValues(ref Auftrag_Position ap, bool isAlternative1Checked, bool isAlternative2Checked) { ap.AuftragID = int.Parse(auftragsNr); ap.Artikel = rdbVorderwand.Checked ? "Vorderwand" : rdbKabinen.Checked ? "Kabine" : rdbTrennwand.Checked ? "Trennwand" : rdbSchamwand.Checked ? "Schamwand" : rdbVorOTuer.Checked ? "Abschlusswand" : "Sonderartikel"; ap.Sondertext = tbxSondertextUnten.Text == "" ? null : tbxSondertextUnten.Text; ap.SondertextOben = tbxSondertextOben.Text == "" ? null : tbxSondertextOben.Text; ap.Typ = rdbTM.Checked ? "TM" : rdbTS.Checked ? "TS" : "NK"; ap.AnlagenStk = tbxAnlagen.Text == "" ? 0 : Decimal.Parse(tbxAnlagen.Text); ap.Breite = tbxBreite.Text == "" ? 0 : int.Parse(tbxBreite.Text); ap.Tiefe = tbxTiefe.Text == "" ? 0 : int.Parse(tbxTiefe.Text); ap.Türen = tbxTüren.Text == "" ? 0 : int.Parse(tbxTüren.Text); ap.TW = tbxTrw.Text == "" ? 0 : int.Parse(tbxTrw.Text); ap.ZuschlagTür = tbxZuschlag.Text == "" ? 0 : int.Parse(tbxZuschlag.Text); ap.Zuschlag = tbxVK.Text == "" ? 0 : int.Parse(tbxVK.Text); ap.ZuschlagArt = cbxVK.SelectedItem.ToString(); ap.Alupulver = cbxAlupulver.Checked ? Decimal.Parse(tbxAlupulv.Text) : 0.00m; ap.Montage = cbxMontage.Checked ? "ja" : "nein"; ap.Oberlicht = cbxOberlicht.Checked ? "ja" : "nein"; ap.AussparungStk = null; ap.SonderartikelEinheit = cbxSonderartikelEinheit.Text == "" ? null : cbxSonderartikelEinheit.Text; if (rdbAussparung.Checked) { ap.AussparungTxt = cobAussaprungBeschreibung.Text == "" ? null : cobAussaprungBeschreibung.Text; } else { ap.AussparungTxt = null; } ap.Einzelpreis = tbxEinzelVK.Text == "" ? 0.00m : Decimal.Parse(tbxEinzelVK.Text); if (isAlternative1Checked) { ap.Alternativ1Typ = rdbTM1.Checked ? "TM" : rdbTS1.Checked ? "TS" : "NK"; ap.Alternativ1Preis = tbxAlt1Preis.Text == "" ? 0.00m : Decimal.Parse(tbxAlt1Preis.Text); } else { ap.Alternativ1Typ = null; ap.Alternativ1Preis = null; } if (isAlternative2Checked) { ap.Alternativ2Typ = rdbTM2.Checked ? "TM" : rdbTS2.Checked ? "TS" : "NK"; ap.Alternativ2Preis = tbxAlt2Preis.Text == "" ? 0.00m : Decimal.Parse(tbxAlt2Preis.Text); } else { ap.Alternativ2Typ = null; ap.Alternativ2Preis = null; } }
///<summary> ///</summary> ///<param name="ap"></param> public Form_Kalkualtion(Auftrag_Position ap) { InitializeComponent(); InitializeKalkulation(); kalkParamDB = DBManager.GetKalkulationsparameter(); this.isAuftrag = true; //Ausgewählte Auftragsposition laden positionsNr = ap.PosID.ToString(); auftragsNr = ap.AuftragID.ToString(); switch (ap.Artikel) { case "Vorderwand": rdbVorderwand.Checked = true; break; case "Kabine": rdbKabinen.Checked = true; break; case "Trennwand": rdbTrennwand.Checked = true; break; case "Schamwand": rdbSchamwand.Checked = true; break; case "Abschlusswand": rdbVorOTuer.Checked = true; break; case "Sonderartikel": rdbAussparung.Checked = true; break; } tbxSondertextUnten.Text = ap.Sondertext; tbxSondertextOben.Text = ap.SondertextOben; switch (ap.Typ) { case "TM": rdbTM.Checked = true; break; case "TS": rdbTS.Checked = true; break; case "NK": rdbNK.Checked = true; break; } tbxAnlagen.Text = String.Format("{0:#,0.##}", ap.AnlagenStk); tbxBreite.Text = ap.Breite.ToString(); tbxTiefe.Text = ap.Tiefe.ToString(); tbxTüren.Text = ap.Türen.ToString(); tbxTrw.Text = ap.TW.ToString(); tbxZuschlag.Text = ap.ZuschlagTür.ToString(); if (ap.Artikel == "Sonderartikel") { tbxAussparungenPreis.Text = ap.Einzelpreis.ToString(); double temp = double.Parse(tbxAussparungenPreis.Text); tbxAussparungenPreis.Text = temp.ToString(); gbxAussparung.Enabled = true; cbxSonderartikelEinheit.Text = ap.SonderartikelEinheit; } tbxVK.Text = ap.Zuschlag.ToString(); switch (ap.ZuschlagArt) { case "Prozent": cbxVK.SelectedIndex = 0; break; case "Euro": cbxVK.SelectedIndex = 1; break; } cbxAlupulver.Checked = ap.Alupulver != 0.00m ? true : false; cbxMontage.Checked = ap.Montage == "ja" ? true : false; cobAussaprungBeschreibung.Text = ap.AussparungTxt; if (ap.Alternativ1Typ != null) { cbxAlternativ1.Checked = true; switch (ap.Alternativ1Typ) { case "TM": rdbTM1.Checked = true; break; case "TS": rdbTS1.Checked = true; break; case "NK": rdbNK1.Checked = true; break; } tbxAlt1Preis.Text = ap.Alternativ1Preis.ToString(); } if (ap.Alternativ2Typ != null) { cbxAlternativ2.Checked = true; switch (ap.Alternativ2Typ) { case "TM": rdbTM2.Checked = true; break; case "TS": rdbTS2.Checked = true; break; case "NK": rdbNK2.Checked = true; break; } tbxAlt2Preis.Text = ap.Alternativ2Preis.ToString(); } Kalkulieren(); tbxAlupulv.Text = ap.Alupulver.ToString(); cbxOberlicht.Checked = ap.Oberlicht == "ja" ? true : false; if (ap.Artikel != "Sonderartikel") { tbxEinzelVK.Text = String.Format("{0:0,0}", ap.Einzelpreis); } }