예제 #1
0
    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;

    }
예제 #2
0
 partial void DeleteAuftrag_Position(Auftrag_Position instance);
예제 #3
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;
    }
예제 #4
0
 partial void InsertAuftrag_Position(Auftrag_Position instance);
예제 #5
0
 partial void UpdateAuftrag_Position(Auftrag_Position instance);
예제 #6
0
		private void detach_Auftrag_Position(Auftrag_Position entity)
		{
			this.SendPropertyChanging();
			entity.Rechnung = null;
		}
예제 #7
0
		private void attach_Auftrag_Position(Auftrag_Position entity)
		{
			this.SendPropertyChanging();
			entity.Auftrag = this;
		}
예제 #8
0
    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;
    }
예제 #9
0
    /// <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;
      }
    }
예제 #10
0
    ///<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);
      }
    }