Esempio n. 1
0
    /// <summary>
    /// Diese Methode erstellt für das angezeigte Angebot implizit einen Auftrag und danach eine Rechnung und öffnet den Sofortdruck-Dialog
    /// </summary>
    /// <param name="schlussrechnung">Gibt an ob es sich um eine Schlussrechnung handelt (true) oder nicht (false)</param>
    private void CreateInvoiceForOrderPositions(bool schlussrechnung)
    {
      // Auftrag erstellen
      Auftrag auftrag = CreateOrderForOfferPositionsWithoutOrderID();

      using (DataBaseDataContext dbContext = new DataBaseDataContext())
      {
        // Auftragspositionen zum Auftrag ermitteln.
        var auftrag_positionen = dbContext.Auftrag_Position.Where(ap => ap.AuftragID.Equals(auftrag.AuftragID));


        var rechnung = new DB.Rechnung
                           {
                             Datum = dateAngVorgabeRech.Value.Date != DateTime.Today.Date ? dateAngVorgabeRech.Value.Date : DateTime.Today.Date,
                             Steuer = auftrag.Steuer,
                             KundeID = auftrag.KundeID,
                             Typ = auftrag.Typ,
                             BV = auftrag.BV,
                             BV2 = auftrag.BV2,
                             Zahlungsbedingung = auftrag.Zahlungsbedingung,
                             Betreff = auftrag.Betreff,
                             Nachlass = auftrag.Nachlass,
                             NachlassArt = auftrag.NachlassArt,
                             Aufmaß = auftrag.Aufmaß,
                             Anfahrt = auftrag.Anfahrt,
                             Sondertext = auftrag.Sondertext,
                             Schlussrechnung = schlussrechnung ? "ja" : null
                           };

        try
        {
          dbContext.Rechnung.InsertOnSubmit(rechnung);
          dbContext.SubmitChanges();
        }
        catch (Exception ex)
        {
          MessageBox.Show(ex.ToString());
        }

        decimal sum = 0.0m;

        foreach (Auftrag_Position pos in auftrag_positionen)
        {

          var rechnungPosition = new Rechnung_Position()
          {
            RechnungID = rechnung.RechnungID,
            Artikel = pos.Artikel,
            Sondertext = pos.Sondertext,
            Typ = pos.Typ,
            AnlagenStk = pos.AnlagenStk,
            Breite = pos.Breite,
            Tiefe = pos.Tiefe,
            Türen = pos.Türen,
            TW = pos.TW,
            ZuschlagTür = pos.ZuschlagTür,
            Einzelpreis = pos.Einzelpreis,
            Zuschlag = pos.Zuschlag,
            ZuschlagArt = pos.ZuschlagArt,
            Alupulver = pos.Alupulver,
            Montage = pos.Montage,
            AussparungStk = pos.AussparungStk,
            AussparungTxt = pos.AussparungTxt,
            Alternativ1Typ = pos.Alternativ1Typ,
            Alternativ1Preis = pos.Alternativ1Preis,
            Alternativ2Typ = pos.Alternativ2Typ,
            Alternativ2Preis = pos.Alternativ2Preis,
            SondertextOben = pos.SondertextOben,
            SonderartikelEinheit = pos.SonderartikelEinheit
          };


          // Increment Gesamtsumme.
          sum += rechnungPosition.Einzelpreis * rechnungPosition.AnlagenStk;
          sum += rechnungPosition.Alupulver * rechnungPosition.AnlagenStk;

          try
          {
            dbContext.Rechnung_Position.InsertOnSubmit(rechnungPosition);
            dbContext.SubmitChanges();
            pos.RechnungID = rechnung.RechnungID;
            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;


          // Rechnung mit Gesamtbetrag updaten.
          rechnung.Gesamtbetrag = sum;
          dbContext.SubmitChanges();
        }
        catch (Exception ex)
        {
          MessageBox.Show(ex.ToString());
        }

        this.Cursor = Cursors.WaitCursor;
        PrintManager.PrintDirectlyWithDialog(EReports.Rechnung, new List<int>() { 1, rechnung.RechnungID });
        this.Cursor = Cursors.Default;

      }


    }
Esempio n. 2
0
    private void itemAllPos_Click(object sender, EventArgs e)
    {
      using (DataBaseDataContext dbContext = new DataBaseDataContext())
      {
        var auftrag = dbContext.Auftrag.Where(auf => auf.AuftragID.Equals(int.Parse(tbxAufNummer.Text))).FirstOrDefault();

        var rechnung = new DB.Rechnung
                          {
                            Datum = dateAufVorgabeRech.Value.Date != DateTime.Today.Date ? dateAufVorgabeRech.Value.Date : DateTime.Today.Date, 
                            Steuer = auftrag.Steuer,
                            KundeID = auftrag.KundeID,
                            Typ = auftrag.Typ,
                            BV = auftrag.BV,
                            BV2 = auftrag.BV2,
                            Zahlungsbedingung = auftrag.Zahlungsbedingung,
                            Betreff = auftrag.Betreff,
                            Nachlass = auftrag.Nachlass,
                            NachlassArt = auftrag.NachlassArt,
                            Aufmaß = auftrag.Aufmaß,
                            Anfahrt = auftrag.Anfahrt,
                            Sondertext = auftrag.Sondertext,
                          };

        try
        {
          dbContext.Rechnung.InsertOnSubmit(rechnung);
          dbContext.SubmitChanges();
        }
        catch (Exception ex)
        {
          MessageBox.Show(ex.ToString());
        }

        decimal sum = 0.0m;

        foreach (DataGridViewRow row in dgrPositionen.Rows)
        {
          // Es werden nur Auftragspositionen berücksichtigt, die noch keinem Auftrag zugeordnet wurden.
          if (row.Cells["RechnungID"].Value == null)
          { 
            var auftragPosition = dbContext.Auftrag_Position.Where(ap => ap.PosID.Equals(row.Cells["PosID"].Value)).FirstOrDefault();

            var rechnungPosition = new Rechnung_Position()
            {
              RechnungID = rechnung.RechnungID,
              Artikel = auftragPosition.Artikel,
              Sondertext = auftragPosition.Sondertext,
              Typ = auftragPosition.Typ,
              AnlagenStk = auftragPosition.AnlagenStk,
              Breite = auftragPosition.Breite,
              Tiefe = auftragPosition.Tiefe,
              Türen = auftragPosition.Türen,
              TW = auftragPosition.TW,
              ZuschlagTür = auftragPosition.ZuschlagTür,
              Einzelpreis = auftragPosition.Einzelpreis,
              Zuschlag = auftragPosition.Zuschlag,
              ZuschlagArt = auftragPosition.ZuschlagArt,
              Alupulver = auftragPosition.Alupulver,
              Montage = auftragPosition.Montage,
              AussparungStk = auftragPosition.AussparungStk,
              AussparungTxt = auftragPosition.AussparungTxt,
              Alternativ1Typ = auftragPosition.Alternativ1Typ,
              Alternativ1Preis = auftragPosition.Alternativ1Preis,
              Alternativ2Typ = auftragPosition.Alternativ2Typ,
              Alternativ2Preis = auftragPosition.Alternativ2Preis,
              SondertextOben = auftragPosition.SondertextOben,
              SonderartikelEinheit = auftragPosition.SonderartikelEinheit
            };


            // Increment Gesamtsumme.
            sum += rechnungPosition.Einzelpreis * rechnungPosition.AnlagenStk;
            sum += rechnungPosition.Alupulver * rechnungPosition.AnlagenStk;
            try
            {
              dbContext.Rechnung_Position.InsertOnSubmit(rechnungPosition);
              dbContext.SubmitChanges();
              auftragPosition.RechnungID = rechnung.RechnungID;
              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;

          // Rechnung mit Gesamtbetrag updaten.
          rechnung.Gesamtbetrag = sum;
          dbContext.SubmitChanges();
        }
        catch (Exception ex)
        {
          MessageBox.Show(ex.ToString());
        }
        dgrPositionen.DataSource = Func.LoadAuftragPositionenUebersicht();
        GeneratePosNr();
        selectedRows = 0;
        btnEdit.Enabled = false;

        this.Cursor = Cursors.WaitCursor;
        PrintManager.PrintDirectlyWithDialog(EReports.Rechnung, new List<int>() { 1, rechnung.RechnungID });
        this.Cursor = Cursors.Default;
      }
     
    }