using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Baza_Reklam { public partial class Facturer : Form { private int reklamaId; private int customerId; public Facturer(int rekId) { InitializeComponent(); this.reklamaId = rekId; kLIENCITableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; kONTATableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; rEKLAMATableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; } /// /// Ładuje informacje z reklamy o fakturze - jeżeli była wcześniej wystawiona proforma /// lub inna faktura, to w tabeli REKLAMA sa zapamietane min. daty. Jeżeli faktura jest wystawiana /// po raz pierwszy to wpisuje daty systemowe. /// private void Facturer_Load(object sender, EventArgs e) { this.rEKLAMATableAdapter.FillByReklamaId(this.rEKLAMADataSet.REKLAMA, reklamaId); if (rEKLAMABindingSource.Current != null) { DataRowView row = (DataRowView)rEKLAMABindingSource.Current; int idAgencji = Utils.idAgencji(row["SYMBOL AKWIZYTORA"].ToString()); this.kONTATableAdapter.FillByIdAgencji(this.sLOWNIKDataSet.KONTA, idAgencji); rEKLAMABindingSource.ResetBindings(false); customerId = Convert.ToInt32(row["customerId"]); kLIENCITableAdapter.FillByCustomerId(this.rEKLAMADataSet.KLIENCI, customerId); if (row["id_faktury"] != DBNull.Value) { wystawFaktureButton.Enabled = false; wystawProformeButton.Enabled = false; // usunButton.Enabled = true & User.getUser().St_kierownik; nUMER_ROZTextBox.Text = Utils.tagAgenta(row["SYMBOL AKWIZYTORA"].ToString()); string numer_fakt = Convert.ToString(row["FAKTURA NUMER"]); string[] read = new string[3]; read = numer_fakt.Split("/".ToCharArray(), 3); nUMERTextBox.Text = read[0]; } else { nUMER_ROZTextBox.Text = Utils.tagAgenta(row["SYMBOL AKWIZYTORA"].ToString()); nUMERTextBox.Text = Utils.numerNowejFaktury(nUMER_ROZTextBox.Text, DateTime.Today.Year).ToString(); if (row["FAKTURA DATA SPRZEDAŻY"] == DBNull.Value) { dATA_SPRZEDAZYDateTimePicker.Value = DateTime.Today; } if (row["FAKTURA DATA WYSTAWIENIA"] == DBNull.Value) { dATA_WYSTAWIENIADateTimePicker.Value = DateTime.Today; } if (row["Zaliczka_Data"] == DBNull.Value) { zaliczka_DataDateTimePicker.Value = DateTime.Today; } if (row["FAKTURA TERMIN ZAPŁATY"] == DBNull.Value) { tERMIN_ZAPLATYDateTimePicker.Value = DateTime.Today.AddDays(7); } sPOSOB_ZAPLATYListBox.SelectedIndex = 1; rEKLAMABindingSource.EndEdit(); wystawFaktureButton.Enabled = true; wystawProformeButton.Enabled = true; // usunButton.Enabled = false; // iD_KONTAComboBox.SelectedIndex = 0; } } } /// /// Wyświetla szczegóły konta /// private void button1_Click(object sender, EventArgs e) { if (kONTABindingSource.Current != null) { DataRowView row = (DataRowView)kONTABindingSource.Current; MessageBox.Show(row["konto"].ToString()); } } private void wystawFaktureButton_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; bool ok = false; // if (tYPLabel1.Text == "BEZPŁATNA" if (zATWIERDZONO_DO_DRUKUCheckBox.CheckState != CheckState.Checked) { MessageBox.Show("Zamówienie nie jest zatwierdzone do druku."); this.Cursor = Cursors.Default; return; } if (Utils.istniejeFaktura(Convert.ToInt32(nUMERTextBox.Text), nUMER_ROZTextBox.Text, dATA_WYSTAWIENIADateTimePicker.Value.Year)) { MessageBox.Show("Istnieje już faktura o numerze " + nUMERTextBox.Text + "/" + nUMER_ROZTextBox.Text + "/" + dATA_WYSTAWIENIADateTimePicker.Value.Year.ToString()); this.Cursor = Cursors.Default; return; } if (iD_KONTAComboBox.SelectedValue == null) { MessageBox.Show("Wybierz konto"); this.Cursor = Cursors.Default; return; } if ((nipKrajTextBox.Text.Length == 0) && ((int)iD_KONTAComboBox.SelectedValue != 1)) { if (MessageBox.Show("Brak kodu kraju w EU. Czy na pewno chcesz wystawić fakturę?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.No) { this.Cursor = Cursors.Default; return; } } SqlConnection conn = new SqlConnection(ConnString.getConnString().Value); SqlTransaction transaction; SqlCommand command = new SqlCommand("Proc_Make_Faktura_Waluty", conn); command.CommandType = CommandType.StoredProcedure; //dodawanie parametrow command.Parameters.AddWithValue("@ReklamaID", this.reklamaId); command.Parameters.AddWithValue("@FakturaNumer", nUMERTextBox.Text); command.Parameters.AddWithValue("@NumerRoz", nUMER_ROZTextBox.Text); switch (sPOSOB_ZAPLATYListBox.SelectedIndex) { case 1: command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Przelew"); break; case 2: command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Gotówka"); break; case 3: command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Barter"); break; default: command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Karta kredytowa"); break; } DataRowView row = (DataRowView)rEKLAMABindingSource.Current; command.Parameters.AddWithValue("@Zaplacono", zAPLACONOCheckBox.Checked); command.Parameters.AddWithValue("@FakturaDataWyst", dATA_WYSTAWIENIADateTimePicker.Value); command.Parameters.AddWithValue("@FakturaDataSprzed", dATA_SPRZEDAZYDateTimePicker.Value); command.Parameters.AddWithValue("@FakturaTerminZaplaty", tERMIN_ZAPLATYDateTimePicker.Value); command.Parameters.AddWithValue("@Konto", iD_KONTAComboBox.SelectedValue); command.Parameters.AddWithValue("@StawkaVat", row["VAT"]); if (zaliczka_BruttoTextBox.Text != "") { command.Parameters.AddWithValue("@Zaliczka_Brutto", row["Zaliczka_Brutto"]); command.Parameters.AddWithValue("@Zaliczka_Data", zaliczka_DataDateTimePicker.Value); } command.Parameters.AddWithValue("@wyroznienie", row["wyroznienie"]); //dodawanie parametrow do faktury w walucie SqlCommand command2 = new SqlCommand(); command2.Connection = conn; command2.CommandType = CommandType.Text; command2.CommandText = "select Brutto_Euro, Brutto_Euro_Miano, waluta_kurs, waluta_przelicznik,waluta_kurs_z_dnia,waluta_tabela_nr from " + "reklama where reklamaId= " + this.reklamaId; conn.Open(); SqlDataReader reader = command2.ExecuteReader(); while (reader.Read()) { command.Parameters.AddWithValue("@waluta_brutto", reader.GetValue(0)); command.Parameters.AddWithValue("@waluta_miano", reader.GetValue(1)); command.Parameters.AddWithValue("@waluta_kurs", reader.GetValue(2)); command.Parameters.AddWithValue("@waluta_przelicznik", reader.GetValue(3)); command.Parameters.AddWithValue("@waluta_kurs_z_dnia", reader.GetValue(4)); command.Parameters.AddWithValue("@waluta_tabela_nr", reader.GetValue(5)); } conn.Close(); conn.Open(); //wystawanie faktury transaction = conn.BeginTransaction(); command.Transaction = transaction; try { command.ExecuteNonQuery(); transaction.Commit(); ok = true; MessageBox.Show("Fakture dodano!"); } catch (Exception ex) { MessageBox.Show(ex.GetType() + ex.Message); try { transaction.Rollback(); } catch (Exception ex2) { MessageBox.Show("ROLLBACK:" + ex2.GetType() + ex2.Message); } } conn.Close(); //odswiezanie - musi być bo faktura jest dodawana przez procedure if (ok) { rEKLAMADataSet.REKLAMA.Clear(); rEKLAMATableAdapter.FillByReklamaId(this.rEKLAMADataSet.REKLAMA, this.reklamaId); row = (DataRowView)rEKLAMABindingSource.Current; this.rEKLAMADataSet.FAKTURY.Clear(); int idFaktury = Convert.ToInt32(row["id_faktury"]); this.fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFaktury); //wydruk faktury FactureViewer fv = new FactureViewer(idFaktury, true); fv.ShowDialog(); this.Cursor = Cursors.Default; wystawFaktureButton.Enabled = false; wystawProformeButton.Enabled = false; this.DialogResult = DialogResult.OK; this.Close(); } else { this.Cursor = Cursors.Default; } } /// /// Wystawienie proformy polega na wystawieniu faktury i poźniejszym usunięciu jej z bazy... /// private void wystawProformeButton_Click(object sender, EventArgs e) { bool ok = false; if (iD_KONTAComboBox.SelectedValue == null) { MessageBox.Show("Wybierz konto"); return; } SqlConnection conn = new SqlConnection( ConnString.getConnString().Value); SqlTransaction transaction; SqlCommand command = new SqlCommand("Proc_Make_Faktura_Waluty", conn); command.CommandType = CommandType.StoredProcedure; command.Parameters.AddWithValue("@ReklamaID", this.reklamaId); command.Parameters.AddWithValue("@FakturaNumer", nUMERTextBox.Text); command.Parameters.AddWithValue("@NumerRoz", nUMER_ROZTextBox.Text); switch (sPOSOB_ZAPLATYListBox.SelectedIndex) { case 1: command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Przelew"); break; case 2: command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Gotówka"); break; case 3: command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Barter"); break; default: command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Karta kredytowa"); break; } DataRowView r = (DataRowView)rEKLAMABindingSource.Current; command.Parameters.AddWithValue("@Zaplacono", zAPLACONOCheckBox.Checked); command.Parameters.AddWithValue("@FakturaDataWyst", dATA_WYSTAWIENIADateTimePicker.Value); command.Parameters.AddWithValue("@FakturaDataSprzed", dATA_SPRZEDAZYDateTimePicker.Value); command.Parameters.AddWithValue("@FakturaTerminZaplaty", tERMIN_ZAPLATYDateTimePicker.Value); command.Parameters.AddWithValue("@Konto", iD_KONTAComboBox.SelectedValue); command.Parameters.AddWithValue("@StawkaVat", r["VAT"]); if (zaliczka_BruttoTextBox.Text != "") { command.Parameters.AddWithValue("@Zaliczka_Brutto", r["Zaliczka_Brutto"]); command.Parameters.AddWithValue("@Zaliczka_Data", zaliczka_DataDateTimePicker.Value); } command.Parameters.AddWithValue("@wyroznienie", r["wyroznienie"]); SqlCommand command2 = new SqlCommand(); command2.Connection = conn; command2.CommandType = CommandType.Text; command2.CommandText = "select Brutto_Euro, Brutto_Euro_Miano, waluta_kurs, waluta_przelicznik,waluta_kurs_z_dnia,waluta_tabela_nr from " + "reklama where reklamaId= " + this.reklamaId; conn.Open(); SqlDataReader reader = command2.ExecuteReader(); while (reader.Read()) { command.Parameters.AddWithValue("@waluta_brutto", reader.GetValue(0)); command.Parameters.AddWithValue("@waluta_miano", reader.GetValue(1)); command.Parameters.AddWithValue("@waluta_kurs", reader.GetValue(2)); command.Parameters.AddWithValue("@waluta_przelicznik", reader.GetValue(3)); command.Parameters.AddWithValue("@waluta_kurs_z_dnia", reader.GetValue(4)); command.Parameters.AddWithValue("@waluta_tabela_nr", reader.GetValue(5)); } conn.Close(); conn.Open(); transaction = conn.BeginTransaction(); command.Transaction = transaction; try { command.ExecuteNonQuery(); transaction.Commit(); ok = true; } catch (Exception ex) { MessageBox.Show(ex.GetType() + ex.Message); try { transaction.Rollback(); } catch (Exception ex2) { MessageBox.Show("ROLLBACK:" + ex2.GetType() + ex2.Message); } } conn.Close(); //odswiezanie if (ok) { rEKLAMADataSet.REKLAMA.Clear(); rEKLAMATableAdapter.FillByReklamaId(this.rEKLAMADataSet.REKLAMA, this.reklamaId); DataRowView row = (DataRowView)rEKLAMABindingSource.Current; int idFaktury = Convert.ToInt32(row["id_faktury"]); this.fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFaktury); FactureViewer fv = new FactureViewer(idFaktury, false); fv.ShowDialog(); this.usunFakture(idFaktury); //odswiezenie reklam rEKLAMADataSet.REKLAMA.Clear(); rEKLAMATableAdapter.FillByReklamaId(this.rEKLAMADataSet.REKLAMA, this.reklamaId); row = (DataRowView)rEKLAMABindingSource.Current; //ustawienie pól formularza na dodanie nowej faktury nUMER_ROZTextBox.Text = Utils.tagAgenta(row["SYMBOL AKWIZYTORA"].ToString()); nUMERTextBox.Text = Utils.numerNowejFaktury(nUMER_ROZTextBox.Text, DateTime.Today.Year).ToString(); if (row["FAKTURA DATA SPRZEDAŻY"] == DBNull.Value) { dATA_SPRZEDAZYDateTimePicker.Value = DateTime.Today; } if (row["FAKTURA DATA WYSTAWIENIA"] == DBNull.Value) { dATA_WYSTAWIENIADateTimePicker.Value = DateTime.Today; } if (row["Zaliczka_Data"] == DBNull.Value) { zaliczka_DataDateTimePicker.Value = DateTime.Today; } if (row["FAKTURA TERMIN ZAPŁATY"] == DBNull.Value) { tERMIN_ZAPLATYDateTimePicker.Value = DateTime.Today.AddDays(7); } //iD_KONTAComboBox.SelectedIndex = 0; sPOSOB_ZAPLATYListBox.SelectedIndex = 1; rEKLAMABindingSource.EndEdit(); wystawFaktureButton.Enabled = true; wystawProformeButton.Enabled = true; } } /// /// Zmiana faktury dla Poznania. /// private void fakturaPoznan(int idFaktury) { int idSprzedawcy = 6; int idNabywcy = 18845; int idKonta = 43; SqlCommand command = new SqlCommand(); command.Connection = new SqlConnection(ConnString.getConnString().Value); command.CommandText = "select Adres_Fkatura from Klienci where CustomerId=18845"; command.Connection.Open(); string nabywcaAdres = Convert.ToString(command.ExecuteScalar()); command.CommandText = "select Nip from KLIENCI where CustomerId=18845"; string nabywcaNIP = Convert.ToString(command.ExecuteScalar()); command.CommandText = "select Adres_Fk from AGENCJE where Id_agencji = 2"; string sprzedawcaAdres = Convert.ToString(command.ExecuteScalar()); command.CommandText = "select NIP from AGENCJE where Id_agencji = 2"; string sprzedawcaNIP = Convert.ToString(command.ExecuteScalar()); command.Connection.Close(); command.CommandText = "update faktury set ID_SPRZEDAWCY=@idSprzedawcy, ID_NABYWCY=@idNabywcy," + "NABYWCA_ADRES=@nadres,SPRZEDAWCA_ADRES=@sadres,NABYWCA_NIP=@nnip,SPRZEDAWCA_NIP=@snip," + "ID_KONTA=@idKonta where ID_FAKTURY=@idFaktury"; command.Parameters.AddWithValue("@idSprzedawcy", idSprzedawcy); command.Parameters.AddWithValue("@idNabywcy", idNabywcy); command.Parameters.AddWithValue("@nadres", nabywcaAdres); command.Parameters.AddWithValue("@sadres", sprzedawcaAdres); command.Parameters.AddWithValue("@nnip", nabywcaNIP); command.Parameters.AddWithValue("@snip", sprzedawcaNIP); command.Parameters.AddWithValue("@idKonta", idKonta); command.Parameters.AddWithValue("@idFaktury", idFaktury); try { command.Connection.Open(); command.ExecuteNonQuery(); command.Connection.Close(); } catch (Exception e1) { MessageBox.Show(e1.Message); } } /// /// Zmiana faktury dla Katowic. /// private void fakturaKatowice(int idFaktury) { int idSprzedawcy = 4; int idNabywcy = 678; int idKonta = 43; SqlCommand command = new SqlCommand(); command.Connection = new SqlConnection(ConnString.getConnString().Value); command.CommandText = "select Adres_Fkatura from Klienci where CustomerId=678"; command.Connection.Open(); string nabywcaAdres = Convert.ToString(command.ExecuteScalar()); command.CommandText = "select Nip from KLIENCI where CustomerId=678"; string nabywcaNIP = Convert.ToString(command.ExecuteScalar()); command.CommandText = "select Adres_Fk from AGENCJE where Id_agencji = 2"; string sprzedawcaAdres = Convert.ToString(command.ExecuteScalar()); command.CommandText = "select NIP from AGENCJE where Id_agencji = 2"; string sprzedawcaNIP = Convert.ToString(command.ExecuteScalar()); command.Connection.Close(); command.CommandText = "update faktury set ID_SPRZEDAWCY=@idSprzedawcy, ID_NABYWCY=@idNabywcy," + "NABYWCA_ADRES=@nadres,SPRZEDAWCA_ADRES=@sadres,NABYWCA_NIP=@nnip,SPRZEDAWCA_NIP=@snip," + "ID_KONTA=@idKonta where ID_FAKTURY=@idFaktury"; command.Parameters.AddWithValue("@idSprzedawcy", idSprzedawcy); command.Parameters.AddWithValue("@idNabywcy", idNabywcy); command.Parameters.AddWithValue("@nadres", nabywcaAdres); command.Parameters.AddWithValue("@sadres", sprzedawcaAdres); command.Parameters.AddWithValue("@nnip", nabywcaNIP); command.Parameters.AddWithValue("@snip", sprzedawcaNIP); command.Parameters.AddWithValue("@idKonta", idKonta); command.Parameters.AddWithValue("@idFaktury", idFaktury); try { command.Connection.Open(); command.ExecuteNonQuery(); command.Connection.Close(); } catch (Exception e1) { MessageBox.Show(e1.Message); } } private void zamknijButton_Click(object sender, EventArgs e) { fAKTURYBindingSource.CancelEdit(); this.DialogResult = DialogResult.Cancel; this.Close(); } private void usunButton_Click(object sender, EventArgs e) { if (rEKLAMABindingSource.Current != null) { bool ok = MessageBox.Show("Czyna pewno chcesz usunąć fakturę?", "", MessageBoxButtons.YesNo) == DialogResult.Yes ? true : false; if (ok) { DataRowView row = (DataRowView)rEKLAMABindingSource.Current; int idFaktury = Convert.ToInt32(row["id_faktury"]); this.usunFakture(idFaktury); this.rEKLAMADataSet.REKLAMA.Clear(); this.rEKLAMATableAdapter.FillByReklamaId(this.rEKLAMADataSet.REKLAMA, reklamaId); wystawFaktureButton.Enabled = true; wystawProformeButton.Enabled = true; // usunButton.Enabled = false; } } } /// /// Usuwa fakture z tabel: FAKTURA, FAKTURA_DETAILS, REKLAMA (częsciowo) /// /// private void usunFakture(int idFaktury) { SqlConnection conn = new SqlConnection( ConnString.getConnString().Value); //usuwanie faktury SqlCommand command3 = new SqlCommand(); command3.CommandText = "delete from faktury where id_faktury = @param "; command3.CommandType = CommandType.Text; command3.Parameters.AddWithValue("@param", idFaktury); command3.Connection = conn; conn.Open(); command3.ExecuteNonQuery(); conn.Close(); //usuwanie pozycji faktury command3 = new SqlCommand(); command3.CommandText = "delete from faktura_details where id_faktury = @param "; command3.CommandType = CommandType.Text; command3.Parameters.AddWithValue("@param", idFaktury); command3.Connection = conn; conn.Open(); command3.ExecuteNonQuery(); conn.Close(); //usuniecie informacji o fakturze z tabeli REKLAMA command3.CommandText = "update REKLAMA set ID_FAKTURY = null where ID_FAKTURY = @param "; conn.Open(); command3.ExecuteNonQuery(); conn.Close(); } private void poznanKatowiceButton_Click(object sender, EventArgs e) { DataRowView row = (DataRowView)rEKLAMABindingSource.Current; // zmiana faktury dla Poznania i Katowic if (row["customerId_Sub"] != DBNull.Value) { if (row["id_faktury"] == DBNull.Value) { MessageBox.Show("Faktura nie została wystawiona"); return; } int idFaktury = Convert.ToInt32(row["id_faktury"]); switch (Convert.ToInt32(row["customerId_Sub"])) { case 678: fakturaKatowice(idFaktury); MessageBox.Show("Faktura została zmieniona"); break; case 18845: fakturaPoznan(idFaktury); MessageBox.Show("Faktura została zmieniona"); break; } } } private void Facturer_Shown(object sender, EventArgs e) { if (!User.getUser().St_kierownik) { foreach (Control c in this.Controls) { c.Enabled = false; } } } } }