예제 #1
0
    /// <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;
    }
예제 #2
0
		private void detach_Auftrag(Auftrag entity)
		{
			this.SendPropertyChanging();
			entity.Kunde = null;
		}
예제 #3
0
		private void attach_Auftrag(Auftrag entity)
		{
			this.SendPropertyChanging();
			entity.Kunde = this;
		}
예제 #4
0
 partial void DeleteAuftrag(Auftrag instance);
예제 #5
0
 partial void UpdateAuftrag(Auftrag instance);
예제 #6
0
 partial void InsertAuftrag(Auftrag instance);