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 ZamowieniaForm : Form { private REKLAMADataSet.KLIENCIRow klient; private int idZamowienia = 0; private int idFaktury = 0; private REKLAMADataSet.REKLAMADataTable reklamyBezZamowienia; private REKLAMADataSetTableAdapters.KLIENCITableAdapter klienciTableAdapter = new REKLAMADataSetTableAdapters.KLIENCITableAdapter(); private SLOWNIKDataSetTableAdapters.AGENCJETableAdapter agencjeTableAdapter = new SLOWNIKDataSetTableAdapters.AGENCJETableAdapter(); private SLOWNIKDataSetTableAdapters.AGENCITableAdapter agenciTableAdapter = new SLOWNIKDataSetTableAdapters.AGENCITableAdapter(); private REKLAMADataSetTableAdapters.UKAZE_SIE_W_NRTableAdapter emisjeTableAdapter = new Baza_Reklam.REKLAMADataSetTableAdapters.UKAZE_SIE_W_NRTableAdapter(); private REKLAMADataSetTableAdapters.FAKTURA_DETAILSTableAdapter fakturyDetailsTableAdapter = new Baza_Reklam.REKLAMADataSetTableAdapters.FAKTURA_DETAILSTableAdapter(); private REKLAMADataSetTableAdapters.WplatyTableAdapter wplatyTableAdapter = new Baza_Reklam.REKLAMADataSetTableAdapters.WplatyTableAdapter(); private REKLAMADataSetTableAdapters.DatyWydanTableAdapter datyWydanTableAdapter = new Baza_Reklam.REKLAMADataSetTableAdapters.DatyWydanTableAdapter(); private SLOWNIKDataSetTableAdapters.Kursy_WalutTableAdapter kursyWalutTableAdapter = new Baza_Reklam.SLOWNIKDataSetTableAdapters.Kursy_WalutTableAdapter(); #region properties public REKLAMADataSet.REKLAMADataTable ReklamyBezZamowienia { get { return reklamyBezZamowienia; } set { reklamyBezZamowienia = value; } } #endregion properties public ZamowieniaForm(REKLAMADataSet.KLIENCIRow klient) { InitializeComponent(); InitTableAdatpers(); this.klient = klient; } public ZamowieniaForm(int idKlienta) { InitializeComponent(); InitTableAdatpers(); this.klient = klienciTableAdapter.GetDataByCustomerId(idKlienta)[0]; } public ZamowieniaForm(int idKlienta, int idZamowienia) { InitializeComponent(); InitTableAdatpers(); this.klient = klienciTableAdapter.GetDataByCustomerId(idKlienta)[0]; this.idZamowienia = idZamowienia; } private void InitTableAdatpers() { this.rEKLAMABindingSource1.DataSource = ReklamyBezZamowienia; this.zamowieniaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.rEKLAMATableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.fakturyDetailsTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.klienciTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.agencjeTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.agenciTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.emisjeTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.datyWydanTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.kursyWalutTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.wplatyTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; } private void ZamowieniaForm_Load(object sender, EventArgs e) { usunFaktureButton.Enabled = User.getUser().St_kierownik; dtpZmianaDaty.Enabled = User.getUser().St_kierownik; dtpZmianaDaty.Value = DateTime.Today; dtpZmianaDaty.MaxDate = DateTime.Today; zamowieniaBindingSource.CurrentChanged += zamowieniaBindingSource_CurrentChanged; ReklamyBezZamowienia = rEKLAMATableAdapter.GetDataByCustomerIdandIdZamowienia(klient.CustomerID); rEKLAMABindingSource1.DataSource = ReklamyBezZamowienia; this.zamowieniaTableAdapter.FillByIdKlienta(this.rEKLAMADataSet.zamowienia, klient.CustomerID); if (idZamowienia != 0) { zamowieniaBindingSource.Position = zamowieniaBindingSource.Find("idZamowienia", idZamowienia); rEKLAMATableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.REKLAMA, idZamowienia); fAKTURYTableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.FAKTURY, idZamowienia); } else { zamowieniaBindingSource.Position = 0; } if (klient != null) { this.KlientLabel.Text = "KOD KLIENTA: " + klient.kodKlienta; } } private void dodajButton_Click(object sender, EventArgs e) { if (klient.IskodKlientaNull() || klient.kodKlienta.Trim() == string.Empty) { MessageBox.Show("Uzupełnij kod klienta"); return; } AddZamowienieForm azf = new AddZamowienieForm(0, klient.CustomerID); if (azf.ShowDialog() == DialogResult.OK) { //rEKLAMADataSet.zamowienia.Clear(); //this.zamowieniaTableAdapter.FillByIdKlienta(this.rEKLAMADataSet.zamowienia, klient.CustomerID); rEKLAMADataSet.zamowienia.ImportRow(azf.Zamowienia[0]); int idZam = azf.Zamowienia[0].idZamowienia; zamowieniaBindingSource.Position = zamowieniaBindingSource.Find("idZamowienia", idZam); rEKLAMATableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.REKLAMA, idZam); fAKTURYTableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.FAKTURY, idZam); } } private void edytujButton_Click(object sender, EventArgs e) { if (zamowieniaBindingSource.Current != null) { DataRowView z = (DataRowView)zamowieniaBindingSource.Current; REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row; int idZam = zamowienie.idZamowienia; AddZamowienieForm azf = new AddZamowienieForm(idZam, klient.CustomerID); if (azf.ShowDialog() == DialogResult.OK) { rEKLAMADataSet.zamowienia.Clear(); this.zamowieniaTableAdapter.FillByIdKlienta(this.rEKLAMADataSet.zamowienia, klient.CustomerID); zamowieniaBindingSource.Position = zamowieniaBindingSource.Find("idZamowienia", idZam); } } } private void dodajDoZamButton_Click(object sender, EventArgs e) { if (zamowieniaBindingSource.Current != null) { if (rEKLAMADataGridView1.SelectedRows.Count > 0) { DataRowView z = (DataRowView)zamowieniaBindingSource.Current; REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row; REKLAMADataSet.REKLAMARow row = (REKLAMADataSet.REKLAMARow)((DataRowView)rEKLAMADataGridView1.SelectedRows[0].DataBoundItem).Row; string s = string.Empty; s = CzyMoznaDodacDoZam(zamowienie,rEKLAMADataSet.REKLAMA, row, s); if (s != string.Empty) { s += "\n Reklamy nie mogą być w obrębie jednego zamówienia"; MessageBox.Show(s, "", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } row.idZamowienia = zamowienie.idZamowienia; if (zamowienie.IsidKontaNull() && !row.IsBrutto_Euro_MianoNull()) { // zmiana domyślnego konta do faktury dla EUR if (User.getUser().IdAgencji != 4 & (row.Brutto_Euro_Miano == "EUR")) { if (User.getUser().IdAgencji == 1223940396 | User.getUser().IdAgencji == 1223940398) { zamowienie.idKonta = 3; } else { zamowienie.idKonta = 5; } } } this.rEKLAMADataSet.REKLAMA.ImportRow(row); ReklamyBezZamowienia.Rows.Remove(row); rEKLAMATableAdapter.Update(this.rEKLAMADataSet.REKLAMA); zamowieniaTableAdapter.Update(this.rEKLAMADataSet.zamowienia); } } } private string CzyMoznaDodacDoZam(REKLAMADataSet.zamowieniaRow zamowienie, REKLAMADataSet.REKLAMADataTable reklamyWZamowieniu, REKLAMADataSet.REKLAMARow row, string s) { if (zamowienie.zafakturowanoWszystko) { s += "Zamówienie jest już w całości zafakturowane."; } //sprawdzenie waluty i VAT if (reklamyWZamowieniu.Count > 0) { REKLAMADataSet.REKLAMARow rek = reklamyWZamowieniu[0]; if (rek.IsBrutto_Euro_MianoNull() ^ row.IsBrutto_Euro_MianoNull()) { if ((rek.IsBrutto_Euro_MianoNull() || row.IsBrutto_Euro_MianoNull()) || (rek.Brutto_Euro_Miano != row.Brutto_Euro_Miano)) { s += "Reklamy są w różnych walutach. \n"; } } REKLAMADataSet.DatyWydanDataTable t = datyWydanTableAdapter.GetDataByPierwszaEmisjaWZamowieniu(zamowienie.idZamowienia); if (t.Rows.Count == 0) { s += "Reklama nie ma wybranych emisji. \n"; } else { if (!zamowienie.IsdataOstatniejZafakturowanejEmisjiNull()) { if (t[0].DATA_W < zamowienie.dataOstatniejZafakturowanejEmisji) { s += "Reklama zawiera emisję na okres, który już został zafakturowany"; } } } if (rek.VAT != row.VAT) { s += "Reklamy mają różne stawki VAT. \n"; } } return s; } private void usunZZamButton_Click(object sender, EventArgs e) { if (zamowieniaBindingSource.Current != null && rEKLAMADataGridView.SelectedRows.Count != 0) { DataRowView z = (DataRowView)zamowieniaBindingSource.Current; REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row; DataRowView row = (DataRowView)rEKLAMADataGridView.SelectedRows[0].DataBoundItem; if (Convert.ToBoolean(row["FAKTURA WYSTAWIONO"]) == true) { MessageBox.Show("Reklama ma zafakturowane emisje. Nie można usunąć reklamy."); return; } row["idZamowienia"] = DBNull.Value; row.EndEdit(); ReklamyBezZamowienia.ImportRow(row.Row); this.rEKLAMADataSet.REKLAMA.Rows.Remove(row.Row); rEKLAMATableAdapter.Update(ReklamyBezZamowienia); zamowieniaTableAdapter.Update(this.rEKLAMADataSet.zamowienia); } } private void button1_Click(object sender, EventArgs e) { if (zamowieniaBindingSource.Current != null) { this.Cursor = Cursors.WaitCursor; DataRowView z = (DataRowView)zamowieniaBindingSource.Current; REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row; REKLAMADataSet.KLIENCIRow klient = (REKLAMADataSet.KLIENCIRow)this.klienciTableAdapter.GetDataByCustomerId(zamowienie.idKlienta).Rows[0]; string errorMessage = czyMoznaZafakturowac(zamowienie, klient); if (errorMessage != string.Empty) { MessageBox.Show(errorMessage); this.Cursor = Cursors.Default; return; } wystawFakture(zamowienie, klient); this.Cursor = Cursors.Default; } } private int wystawFakture(REKLAMADataSet.zamowieniaRow zamowienie, REKLAMADataSet.KLIENCIRow klient) { int idNaglowka = 0; try { REKLAMADataSet.FAKTURYRow naglowekFaktury = utworzNaglowekFaktury(zamowienie, klient); this.rEKLAMADataSet.FAKTURY.AddFAKTURYRow(naglowekFaktury); pobierzOznaczEmisje(zamowienie, naglowekFaktury); utworzPozycjeFaktury(naglowekFaktury); dodajWplate(naglowekFaktury); zamowienie.zafakturowano = true; zamowienie.EndEdit(); SqlConnection conn = new SqlConnection(ConnString.getConnString().Value); fAKTURYTableAdapter.Connection = conn; emisjeTableAdapter.Connection = conn; zamowieniaTableAdapter.Connection = conn; fakturyDetailsTableAdapter.Connection = conn; rEKLAMATableAdapter.Connection = conn; wplatyTableAdapter.Connection = conn; conn.Open(); SqlTransaction transaction = conn.BeginTransaction(); fAKTURYTableAdapter.AttachTransaction(transaction); emisjeTableAdapter.AttachTransaction(transaction); zamowieniaTableAdapter.AttachTransaction(transaction); fakturyDetailsTableAdapter.AttachTransaction(transaction); rEKLAMATableAdapter.AttachTransaction(transaction); wplatyTableAdapter.AttachTransaction(transaction); try { fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY); idNaglowka = naglowekFaktury.ID_FAKTURY; emisjeTableAdapter.Update(this.rEKLAMADataSet.UKAZE_SIE_W_NR); fakturyDetailsTableAdapter.Update(this.rEKLAMADataSet.FAKTURA_DETAILS); wplatyTableAdapter.Update(this.rEKLAMADataSet.Wplaty); int il = (int)emisjeTableAdapter.iloscNiezafakturowanychEmisjiWZamowieniu( zamowienie.idZamowienia); if (il == 0) { zamowienie.zafakturowanoWszystko = true; } zamowieniaTableAdapter.Update(this.rEKLAMADataSet.zamowienia); rEKLAMATableAdapter.Update(this.rEKLAMADataSet.REKLAMA); transaction.Commit(); dtpZmianaDaty.Value = DateTime.Today; } catch (Exception e1) { transaction.Rollback(); conn.Close(); this.rEKLAMADataSet.UKAZE_SIE_W_NR.Clear(); this.rEKLAMADataSet.DatyWydan.Clear(); this.rEKLAMADataSet.FAKTURA_DETAILS.Clear(); this.rEKLAMADataSet.Wplaty.Clear(); this.rEKLAMADataSet.FAKTURY.RemoveFAKTURYRow(naglowekFaktury); this.fAKTURYBindingSource.ResetBindings(false); this.fAKTURYDataGridView.Refresh(); throw e1; } } catch (Exception e2) { MessageBox.Show("Wystąpił błąd: \n" + e2.ToString()); } finally { this.rEKLAMADataSet.UKAZE_SIE_W_NR.Clear(); this.rEKLAMADataSet.DatyWydan.Clear(); this.rEKLAMADataSet.FAKTURA_DETAILS.Clear(); this.rEKLAMADataSet.Wplaty.Clear(); this.fAKTURYBindingSource.ResetBindings(false); this.fAKTURYBindingSource.Sort = "NUMER"; this.fAKTURYDataGridView.Refresh(); this.zamowieniaBindingSource.ResetBindings(false); } return idNaglowka; } private void dodajWplate(REKLAMADataSet.FAKTURYRow naglowekFaktury) { REKLAMADataSet.WplatyRow wplata = this.rEKLAMADataSet.Wplaty.NewWplatyRow(); wplata.idFaktury = naglowekFaktury.ID_FAKTURY; wplata.idZamowienia = naglowekFaktury.idZamowienia; this.rEKLAMADataSet.Wplaty.AddWplatyRow(wplata); } private void utworzPozycjeFaktury(REKLAMADataSet.FAKTURYRow naglowekFaktury) { decimal brutto_waluta = 0; foreach (REKLAMADataSet.UKAZE_SIE_W_NRRow em in this.rEKLAMADataSet.UKAZE_SIE_W_NR) { REKLAMADataSet.FAKTURA_DETAILSRow fakturaDetailsRow = this.rEKLAMADataSet.FAKTURA_DETAILS.NewFAKTURA_DETAILSRow(); REKLAMADataSet.DatyWydanRow[] dataWydanTable = (REKLAMADataSet.DatyWydanRow[])em.GetChildRows("UKAZE_SIE_W_NR_DatyWydan"); REKLAMADataSet.DatyWydanRow dataWydania = dataWydanTable[0]; REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)em.GetParentRow("REKLAMA_UKAZE_SIE_W_NR"); fakturaDetailsRow.ROK = Convert.ToInt16(dataWydania.rok); fakturaDetailsRow.MIESIAC = Convert.ToInt16(dataWydania.ms); fakturaDetailsRow.TYTUL = Convert.ToInt16(dataWydania.idTytulu); fakturaDetailsRow.NAZWA_USLUGI = reklama.ID_REKLAMY + " | " + em.Nr_Wydania; fakturaDetailsRow.reklamaId = reklama.ReklamaID; fakturaDetailsRow.NR_WYDANIA = em.Nr_Wydania; fakturaDetailsRow.CENA_JEDN = Convert.ToDecimal(reklama.CENA_JEDN); fakturaDetailsRow.ILOSC = 1; fakturaDetailsRow.JM = "szt."; if (naglowekFaktury.Iswaluta_mianoNull()) { fakturaDetailsRow.UPUST_NETTO = Convert.ToDecimal(reklama.RABAT) * fakturaDetailsRow.CENA_JEDN; fakturaDetailsRow.UPUST_PR = reklama.RABAT; decimal netto = (1 - Convert.ToDecimal(reklama.RABAT)) * fakturaDetailsRow.CENA_JEDN; fakturaDetailsRow.NETTO = netto; fakturaDetailsRow.S_VAT = reklama.VAT; decimal VAT = Convert.ToDecimal(reklama.VAT); fakturaDetailsRow.VAT = Convert.ToDecimal(Math.Round(VAT * netto, 2)); fakturaDetailsRow.BRUTTO = Convert.ToDecimal(Math.Round((1 + VAT) * netto, 2)); } else { fakturaDetailsRow.BRUTTO = Convert.ToDecimal((reklama.Brutto_Euro / reklama.KROTNOŚĆ) * naglowekFaktury.waluta_kurs); brutto_waluta += Convert.ToDecimal(reklama.Brutto_Euro / reklama.KROTNOŚĆ); fakturaDetailsRow.S_VAT = reklama.VAT; decimal VAT = Convert.ToDecimal(reklama.VAT); decimal brutto = fakturaDetailsRow.BRUTTO; fakturaDetailsRow.VAT = Convert.ToDecimal(Math.Round(VAT * brutto / (1 + VAT), 2)); decimal netto = brutto - fakturaDetailsRow.VAT; fakturaDetailsRow.NETTO = netto; fakturaDetailsRow.UPUST_PR = reklama.RABAT; if (fakturaDetailsRow.UPUST_PR != 0) { fakturaDetailsRow.UPUST_NETTO = netto / Convert.ToDecimal(reklama.RABAT) - netto; } else { fakturaDetailsRow.UPUST_NETTO = 0; } fakturaDetailsRow.CENA_JEDN = Convert.ToDecimal(netto + fakturaDetailsRow.UPUST_NETTO); } fakturaDetailsRow.TYP = 2; fakturaDetailsRow.PODTYP = 1; fakturaDetailsRow.ID_FAKTURY = naglowekFaktury.ID_FAKTURY; if (reklama.wyroznienie) { fakturaDetailsRow.wyroznienie = true; } this.rEKLAMADataSet.FAKTURA_DETAILS.AddFAKTURA_DETAILSRow(fakturaDetailsRow); } if (brutto_waluta != 0) { naglowekFaktury.waluta_brutto = Math.Round(Convert.ToDouble(brutto_waluta),2); naglowekFaktury.EndEdit(); } } private void pobierzOznaczEmisje(REKLAMADataSet.zamowieniaRow zamowienie, REKLAMADataSet.FAKTURYRow naglowekFaktury) { this.emisjeTableAdapter.ClearBeforeFill = false; this.datyWydanTableAdapter.ClearBeforeFill = false; REKLAMADataSet.DatyWydanDataTable t = datyWydanTableAdapter.GetDataByPierwszaEmisjaWZamowieniu(zamowienie.idZamowienia); if (t.Rows.Count == 0) { throw new Exception("Nie ma co fakturować!"); } DateTime d = t[0].DATA_W; d = zamowienie.IsdataOstatniejZafakturowanejEmisjiNull() ? d : zamowienie.dataOstatniejZafakturowanejEmisji.AddMonths(1); foreach (DataRow r in this.rEKLAMADataSet.REKLAMA.Rows) { REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)r; switch (zamowienie.rodzajFakturowania) { //3m case 1: this.emisjeTableAdapter.FillByNiezafakturowane3MSRekID( this.rEKLAMADataSet.UKAZE_SIE_W_NR, reklama.ReklamaID, d); this.datyWydanTableAdapter.FillByReklamaId(this.rEKLAMADataSet.DatyWydan, reklama.ReklamaID); break; //calosc case 2: this.emisjeTableAdapter.FillByNiezafakturowane(this.rEKLAMADataSet.UKAZE_SIE_W_NR, reklama.ReklamaID); this.datyWydanTableAdapter.FillByReklamaId(this.rEKLAMADataSet.DatyWydan, reklama.ReklamaID); break; //1ms default: this.emisjeTableAdapter.FillByNiezafakturowane1MSrekId( this.rEKLAMADataSet.UKAZE_SIE_W_NR, reklama.ReklamaID, d); this.datyWydanTableAdapter.FillByReklamaId(this.rEKLAMADataSet.DatyWydan, reklama.ReklamaID); break; } // ustawiane by pozniej blokowac mozliwosc zmiany rabatu itp. reklama.FAKTURA_WYSTAWIONO = true; reklama.EndEdit(); } if (zamowienie.IsdataOstatniejZafakturowanejEmisjiNull()) { zamowienie.dataOstatniejZafakturowanejEmisji = DateTime.Today.AddMonths(-1); } foreach (DataRow r in this.rEKLAMADataSet.REKLAMA.Rows) { REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)r; foreach (DataRow em in this.rEKLAMADataSet.UKAZE_SIE_W_NR) { REKLAMADataSet.UKAZE_SIE_W_NRRow emisja = (REKLAMADataSet.UKAZE_SIE_W_NRRow)em; emisja.idFaktury = naglowekFaktury.ID_FAKTURY; emisja.zafakturowana = true; if (emisja.ReklamaId == reklama.ReklamaID) { reklama.FAKTURA_WYSTAWIONO = true; if (naglowekFaktury.Iswaluta_mianoNull()) { emisja.netto = Convert.ToDecimal(reklama.CENA_JEDN * (1 - reklama.RABAT)); } else { emisja.netto = Convert.ToDecimal(Math.Round(reklama.Brutto_Euro / reklama.KROTNOŚĆ, 2) * (1 - reklama.RABAT)); emisja.netto = emisja.netto * Convert.ToDecimal(naglowekFaktury.waluta_kurs); } } REKLAMADataSet.DatyWydanRow[] dataWydanTable = (REKLAMADataSet.DatyWydanRow[])em.GetChildRows("UKAZE_SIE_W_NR_DatyWydan"); REKLAMADataSet.DatyWydanRow dataWydania = dataWydanTable[0]; if (dataWydania.DATA_W > zamowienie.dataOstatniejZafakturowanejEmisji) { zamowienie.dataOstatniejZafakturowanejEmisji = dataWydania.DATA_W; } } } zamowienie.EndEdit(); } private REKLAMADataSet.FAKTURYRow utworzNaglowekFaktury(REKLAMADataSet.zamowieniaRow zamowienie, REKLAMADataSet.KLIENCIRow klient) { REKLAMADataSet.FAKTURYRow naglowekFaktury = (REKLAMADataSet.FAKTURYRow)this.rEKLAMADataSet.FAKTURY.NewRow(); naglowekFaktury.idZamowienia = zamowienie.idZamowienia; naglowekFaktury.NUMER_ROZ = zamowienie.kodAgenta; naglowekFaktury.NUMER = Utils.numerNowejFaktury(naglowekFaktury.NUMER_ROZ, DateTime.Today.Year); naglowekFaktury.NUMER_ROK = DateTime.Today.Year; naglowekFaktury.DATA_WYSTAWIENIA = DateTime.Today; if (User.getUser().St_kierownik) { if (dtpZmianaDaty.Value != DateTime.Today) { naglowekFaktury.DATA_WYSTAWIENIA = dtpZmianaDaty.Value; } } SLOWNIKDataSet.AGENCJERow agencja = (SLOWNIKDataSet.AGENCJERow)this.agencjeTableAdapter.GetDataByKodAgenta(zamowienie.kodAgenta).Rows[0]; naglowekFaktury.ID_SPRZEDAWCY = agencja.Id_agencji; if (naglowekFaktury.ID_SPRZEDAWCY == 4 || naglowekFaktury.ID_SPRZEDAWCY == 6 || naglowekFaktury.ID_SPRZEDAWCY == 1223940400) { naglowekFaktury.EKSPORT = true; } naglowekFaktury.MIEJSCOWOSC_WYSTAWIENIA = agencja.miasto; naglowekFaktury.SPRZEDAWCA_ADRES = agencja.Adres_Fk; naglowekFaktury.SPRZEDAWCA_NIP = agencja.NIP; SLOWNIKDataSet.AGENCIRow agent = (SLOWNIKDataSet.AGENCIRow)this.agenciTableAdapter.GetDataByKodAgenta(zamowienie.kodAgenta).Rows[0]; naglowekFaktury.PODPIS_WYSTAWIL = agent.Imię + " " + agent.Nazwisko; naglowekFaktury.DATA_SPRZEDAZY = naglowekFaktury.DATA_WYSTAWIENIA; naglowekFaktury.ID_NABYWCY = zamowienie.idKlienta; naglowekFaktury.NABYWCA_ADRES = klient.Adres_Fkatura; naglowekFaktury.NABYWCA_NIP = klient.Nip; naglowekFaktury.opis = "Faktura za reklamy zgodnie z zamówieniem: " + klient.kodKlienta + "/" + zamowienie.nrZamowienia + "/" + zamowienie.kodAgenta + "/" + zamowienie.rokZamowienia; switch (zamowienie.sposobZaplaty) { case 0: naglowekFaktury.SPOSOB_ZAPLATY = "Karta kredytowa"; break; case 1: naglowekFaktury.SPOSOB_ZAPLATY = "Przelew"; break; case 2: naglowekFaktury.SPOSOB_ZAPLATY = "Gotówka"; break; case 3: naglowekFaktury.SPOSOB_ZAPLATY = "Barter"; break; default: break; } naglowekFaktury.TERMIN_ZAPLATY = naglowekFaktury.DATA_SPRZEDAZY.AddDays(zamowienie.czasPlatnosci); naglowekFaktury.ZAPLACONO = false; naglowekFaktury.FAKTURA_TYP = 2; naglowekFaktury.FAKTURA_PODTYP = 1; naglowekFaktury.ID_KONTA = Convert.ToInt16(zamowienie.idKonta); //WALUTOWE if (!this.rEKLAMADataSet.REKLAMA[0].IsBrutto_Euro_MianoNull() && this.rEKLAMADataSet.REKLAMA[0].Brutto_Euro_Miano != string.Empty) { naglowekFaktury.SPRZEDAWCA_NIP = agencja.vies; naglowekFaktury.NABYWCA_NIP = klient.nipKraj + " " + klient.Nip; naglowekFaktury.waluta_miano = this.rEKLAMADataSet.REKLAMA[0].Brutto_Euro_Miano; DateTime dataPublikacji = naglowekFaktury.DATA_WYSTAWIENIA; SLOWNIKDataSet.Kursy_WalutDataTable kurs = kursyWalutTableAdapter.GetDataByDataPublikacji( naglowekFaktury.waluta_miano, dataPublikacji); if (kurs.Count == 0) { throw new Exception("Błąd przy pobieraniu kursu waluty."); } naglowekFaktury.waluta_kurs = User.getUser().IdAgencji == 6 ? kurs[0].Kurs_Sredni_Poznan : kurs[0].Kurs_Sredni; naglowekFaktury.waluta_kurs_z_dnia = kurs[0].Data_Publikacji; naglowekFaktury.waluta_przelicznik = kurs[0].przelicznik; naglowekFaktury.waluta_tabela_nr = kurs[0].Numer_Tabeli; } naglowekFaktury.EndEdit(); return naglowekFaktury; } private string czyMoznaZafakturowac(REKLAMADataSet.zamowieniaRow zamowienie, REKLAMADataSet.KLIENCIRow klient) { string errorMessage = string.Empty; errorMessage += zamowienie.zafakturowanoWszystko ? "Nie ma co fakturowac! \n" : ""; errorMessage += zamowienie.IsrodzajFakturowaniaNull() ? "Nie wybrano sposobu fakturowania. \n" : ""; errorMessage += zamowienie.IsidKontaNull() ? "Nie wybrano konta. \n" : ""; errorMessage += zamowienie.IssposobZaplatyNull() ? "Nie wybrano sposobu zapłaty. \n" : ""; errorMessage += klient.IsCountryNull() || klient.Country == string.Empty ? "Brak państwa klienta. \n" : ""; errorMessage += klient.IsAdres_FkaturaNull() || klient.Adres_Fkatura == string.Empty ? "Brak adresu faktury klienta. \n" : ""; errorMessage += klient.IsNipNull() || klient.Nip == string.Empty ? "Brak nipu klienta. \n" : ""; if (klient.Country != "Polska") { errorMessage += klient.IsnipKrajNull() || klient.nipKraj == string.Empty ? "Brak symbolu kraju w nipie klienta. \n" : ""; } if (rEKLAMADataSet.REKLAMA.Select("[ZATWIERDZONO DO DRUKU] = 0").Length > 0) { errorMessage += "W zamówieniu są reklamy niezatwierdzone do druku \n"; } return errorMessage; } private void WydrukButton_Click(object sender, EventArgs e) { if (zamowieniaBindingSource.Current != null) { DataRowView z = (DataRowView)zamowieniaBindingSource.Current; REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row; OrderViewer ov = new OrderViewer(zamowienie.idZamowienia, 9); ov.ShowDialog(); } } private void button2_Click(object sender, EventArgs e) { if (fAKTURYBindingSource.Current != null) { REKLAMADataSet.FAKTURYRow row = (REKLAMADataSet.FAKTURYRow) ((DataRowView)fAKTURYBindingSource.Current).Row; if (row.IsidFakturyKorektaNull()) { FactureViewer fv = new FactureViewer(row.ID_FAKTURY,false); fv.ShowDialog(); } else { FactureViewer fv = new FactureViewer(row.idFakturyKorekta, row.ID_FAKTURY); fv.ShowDialog(); } } } private void button3_Click(object sender, EventArgs e) { if (rEKLAMADataSet.REKLAMA.Rows.Count == 0 && rEKLAMADataSet.FAKTURY.Rows.Count == 0) { this.zamowieniaBindingSource.Remove(this.zamowieniaBindingSource.Current); this.zamowieniaBindingSource.EndEdit(); this.zamowieniaTableAdapter.Update(this.rEKLAMADataSet.zamowienia); } else { MessageBox.Show("Nie można usunąć zamówienia."); } } private void korektaButton_Click(object sender, EventArgs e) { if (fAKTURYBindingSource.Current != null) { this.Cursor = Cursors.WaitCursor; DataRowView row = (DataRowView)fAKTURYBindingSource.Current; REKLAMADataSet.FAKTURYRow faktura = (REKLAMADataSet.FAKTURYRow)row.Row; if (faktura.KOREKTA) { MessageBox.Show("Nie można wystawić korekty do korekty"); this.Cursor = Cursors.Default; return; } //sprawdzenie czy korekta nie byla juz wystawiona if (!faktura.IsID_FK_KORNull()) { MessageBox.Show("Istnieje już faktura korekta"); // return; } try { REKLAMADataSet.FAKTURYRow naglowekKorekty = utworzNaglowekKorekty(faktura); pobierzEmisjeDoKorekty(faktura); utworzPozycjeFakturyKorekty(naglowekKorekty); if (!faktura.IsID_FK_KORNull()) { naglowekKorekty.idFakturyKorekta = faktura.ID_FK_KOR; } faktura.ID_FK_KOR = naglowekKorekty.ID_FAKTURY; faktura.EndEdit(); SqlConnection conn = new SqlConnection(ConnString.getConnString().Value); fAKTURYTableAdapter.Connection = conn; emisjeTableAdapter.Connection = conn; zamowieniaTableAdapter.Connection = conn; fakturyDetailsTableAdapter.Connection = conn; rEKLAMATableAdapter.Connection = conn; conn.Open(); SqlTransaction transaction = conn.BeginTransaction(); fAKTURYTableAdapter.AttachTransaction(transaction); emisjeTableAdapter.AttachTransaction(transaction); zamowieniaTableAdapter.AttachTransaction(transaction); fakturyDetailsTableAdapter.AttachTransaction(transaction); rEKLAMATableAdapter.AttachTransaction(transaction); try { fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY); emisjeTableAdapter.Update(this.rEKLAMADataSet.UKAZE_SIE_W_NR); fakturyDetailsTableAdapter.Update(this.rEKLAMADataSet.FAKTURA_DETAILS); zamowieniaTableAdapter.Update(this.rEKLAMADataSet.zamowienia); transaction.Commit(); } catch (Exception e1) { transaction.Rollback(); conn.Close(); throw e1; } } catch (Exception e2) { MessageBox.Show("Wystąpił błąd: \n" + e2.ToString()); } finally { this.rEKLAMADataSet.UKAZE_SIE_W_NR.Clear(); this.rEKLAMADataSet.DatyWydan.Clear(); this.rEKLAMADataSet.FAKTURA_DETAILS.Clear(); this.fAKTURYBindingSource.ResetBindings(false); this.fAKTURYDataGridView.Refresh(); } } this.Cursor = Cursors.Default; } private REKLAMADataSet.FAKTURYRow utworzNaglowekKorekty(REKLAMADataSet.FAKTURYRow faktura) { REKLAMADataSet.FAKTURYRow naglowekKorekty = this.rEKLAMADataSet.FAKTURY.NewFAKTURYRow(); naglowekKorekty.KOREKTA = true; // naglowekKorekty.EKSPORT = true; naglowekKorekty.idZamowienia = faktura.idZamowienia; naglowekKorekty.idFakturyKorekta = faktura.ID_FAKTURY; naglowekKorekty.NUMER_ROZ = faktura.NUMER_ROZ; ; naglowekKorekty.NUMER = Utils.numerNowejFakturyKorekty(naglowekKorekty.NUMER_ROZ, DateTime.Today.Year); naglowekKorekty.NUMER_ROK = DateTime.Today.Year; naglowekKorekty.DATA_WYSTAWIENIA = DateTime.Today; naglowekKorekty.ID_SPRZEDAWCY = faktura.ID_SPRZEDAWCY; if (naglowekKorekty.ID_SPRZEDAWCY == 4 || naglowekKorekty.ID_SPRZEDAWCY == 6 || naglowekKorekty.ID_SPRZEDAWCY == 1223940400) { naglowekKorekty.EKSPORT = true; } naglowekKorekty.MIEJSCOWOSC_WYSTAWIENIA = faktura.MIEJSCOWOSC_WYSTAWIENIA; naglowekKorekty.SPRZEDAWCA_ADRES = faktura.SPRZEDAWCA_ADRES; naglowekKorekty.SPRZEDAWCA_NIP = faktura.SPRZEDAWCA_NIP; naglowekKorekty.PODPIS_WYSTAWIL = faktura.PODPIS_WYSTAWIL; naglowekKorekty.DATA_SPRZEDAZY = DateTime.Today; naglowekKorekty.ID_NABYWCY = faktura.ID_NABYWCY; naglowekKorekty.NABYWCA_ADRES = faktura.NABYWCA_ADRES; naglowekKorekty.NABYWCA_NIP = faktura.NABYWCA_NIP; naglowekKorekty.TERMIN_ZAPLATY = DateTime.Today.AddDays(7); naglowekKorekty.opis = "rezygnacja z emisji reklamy"; naglowekKorekty.SPOSOB_ZAPLATY = faktura.SPOSOB_ZAPLATY; naglowekKorekty.TERMIN_ZAPLATY = faktura.TERMIN_ZAPLATY; naglowekKorekty.ZAPLACONO = false; naglowekKorekty.FAKTURA_TYP = 2; naglowekKorekty.FAKTURA_PODTYP = 1; naglowekKorekty.ID_KONTA = faktura.ID_KONTA; if (!faktura.Iswaluta_mianoNull()) { naglowekKorekty.SPRZEDAWCA_NIP = faktura.SPRZEDAWCA_NIP; naglowekKorekty.NABYWCA_NIP = faktura.NABYWCA_NIP; naglowekKorekty.waluta_miano = faktura.waluta_miano; naglowekKorekty.waluta_kurs = faktura.waluta_kurs; naglowekKorekty.waluta_kurs_z_dnia = faktura.waluta_kurs_z_dnia; naglowekKorekty.waluta_przelicznik = faktura.waluta_przelicznik; naglowekKorekty.waluta_tabela_nr = faktura.waluta_tabela_nr; } this.rEKLAMADataSet.FAKTURY.AddFAKTURYRow(naglowekKorekty); return naglowekKorekty; } private void pobierzEmisjeDoKorekty(REKLAMADataSet.FAKTURYRow naglowekFaktury) { this.emisjeTableAdapter.ClearBeforeFill = false; this.datyWydanTableAdapter.ClearBeforeFill = false; this.emisjeTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.UKAZE_SIE_W_NR, naglowekFaktury.ID_FAKTURY); this.datyWydanTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.DatyWydan, naglowekFaktury.ID_FAKTURY); } private void utworzPozycjeFakturyKorekty(REKLAMADataSet.FAKTURYRow naglowekFaktury) { decimal brutto_waluta = 0; foreach (REKLAMADataSet.UKAZE_SIE_W_NRRow em in this.rEKLAMADataSet.UKAZE_SIE_W_NR) { if (em.status != 2) { REKLAMADataSet.FAKTURA_DETAILSRow fakturaDetailsRow = this.rEKLAMADataSet.FAKTURA_DETAILS.NewFAKTURA_DETAILSRow(); REKLAMADataSet.DatyWydanRow[] dataWydanTable = (REKLAMADataSet.DatyWydanRow[])em.GetChildRows("UKAZE_SIE_W_NR_DatyWydan"); REKLAMADataSet.DatyWydanRow dataWydania = dataWydanTable[0]; REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)em.GetParentRow("REKLAMA_UKAZE_SIE_W_NR"); fakturaDetailsRow.ROK = Convert.ToInt16(dataWydania.rok); fakturaDetailsRow.MIESIAC = Convert.ToInt16(dataWydania.ms); fakturaDetailsRow.TYTUL = Convert.ToInt16(dataWydania.idTytulu); fakturaDetailsRow.NAZWA_USLUGI = reklama.ID_REKLAMY + " | " + em.Nr_Wydania; fakturaDetailsRow.reklamaId = reklama.ReklamaID; fakturaDetailsRow.NR_WYDANIA = em.Nr_Wydania; fakturaDetailsRow.CENA_JEDN = Convert.ToDecimal(reklama.CENA_JEDN); fakturaDetailsRow.ILOSC = 1; fakturaDetailsRow.JM = "szt."; if (naglowekFaktury.Iswaluta_mianoNull()) { fakturaDetailsRow.UPUST_NETTO = Convert.ToDecimal(reklama.RABAT) * fakturaDetailsRow.CENA_JEDN; fakturaDetailsRow.UPUST_PR = reklama.RABAT; decimal netto = (1 - Convert.ToDecimal(reklama.RABAT)) * fakturaDetailsRow.CENA_JEDN; fakturaDetailsRow.NETTO = netto; fakturaDetailsRow.S_VAT = reklama.VAT; decimal VAT = Convert.ToDecimal(reklama.VAT); fakturaDetailsRow.VAT = Convert.ToDecimal(Math.Round(VAT * netto, 2)); fakturaDetailsRow.BRUTTO = Convert.ToDecimal(Math.Round((1 + VAT) * netto, 2)); } else { //int krotnosc = this.rEKLAMADataSet.UKAZE_SIE_W_NR.PoliczAktywne(reklama.ReklamaID); fakturaDetailsRow.BRUTTO = Convert.ToDecimal((reklama.Brutto_Euro / reklama.KROTNOŚĆ) * naglowekFaktury.waluta_kurs); brutto_waluta += Convert.ToDecimal(reklama.Brutto_Euro / reklama.KROTNOŚĆ); fakturaDetailsRow.S_VAT = reklama.VAT; decimal VAT = Convert.ToDecimal(reklama.VAT); decimal brutto = fakturaDetailsRow.BRUTTO; fakturaDetailsRow.VAT = Convert.ToDecimal(Math.Round(VAT * brutto / (1 + VAT), 2)); decimal netto = brutto - fakturaDetailsRow.VAT; fakturaDetailsRow.NETTO = netto; fakturaDetailsRow.UPUST_PR = reklama.RABAT; if (fakturaDetailsRow.UPUST_PR != 0) { fakturaDetailsRow.UPUST_NETTO = netto / Convert.ToDecimal(reklama.RABAT) - netto; } else { fakturaDetailsRow.UPUST_NETTO = 0; } fakturaDetailsRow.CENA_JEDN = Convert.ToDecimal(netto + fakturaDetailsRow.UPUST_NETTO); } fakturaDetailsRow.TYP = 2; fakturaDetailsRow.PODTYP = 1; fakturaDetailsRow.ID_FAKTURY = naglowekFaktury.ID_FAKTURY; if (reklama.wyroznienie) { fakturaDetailsRow.wyroznienie = true; } this.rEKLAMADataSet.FAKTURA_DETAILS.AddFAKTURA_DETAILSRow(fakturaDetailsRow); } } if (brutto_waluta != 0) { naglowekFaktury.waluta_brutto = Math.Round(Convert.ToDouble(brutto_waluta),2); naglowekFaktury.EndEdit(); } } private void fAKTURYDataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) { foreach (DataGridViewRow row in fAKTURYDataGridView.Rows) { DataRowView r = (DataRowView)row.DataBoundItem; REKLAMADataSet.FAKTURYRow f = (REKLAMADataSet.FAKTURYRow)r.Row; if (!f.IsidFakturyKorektaNull()) { row.DefaultCellStyle.ForeColor = Color.Red; } } } private void korektaDoExportButton_Click(object sender, EventArgs e) { if (fAKTURYBindingSource.Current != null) { this.Cursor = Cursors.WaitCursor; DataRowView row = (DataRowView)fAKTURYBindingSource.Current; REKLAMADataSet.FAKTURYRow faktura = (REKLAMADataSet.FAKTURYRow)row.Row; if (faktura.KOREKTA && faktura.EKSPORT) { faktura.EKSPORT = false; fAKTURYBindingSource.EndEdit(); fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY); } this.Cursor = Cursors.Default; } } private void button6_Click(object sender, EventArgs e) { if (fAKTURYBindingSource.Current != null) { DataRowView row = (DataRowView)fAKTURYBindingSource.Current; REKLAMADataSet.FAKTURYRow f = (REKLAMADataSet.FAKTURYRow)row.Row; REKLAMADataSetTableAdapters.WplatyTableAdapter wplatyTableAdapter = new Baza_Reklam.REKLAMADataSetTableAdapters.WplatyTableAdapter(); wplatyTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; REKLAMADataSet.WplatyDataTable table = wplatyTableAdapter.GetDataByIdFaktury(f.ID_FAKTURY); PaymentForm2 pf2; if (table.Count == 0) { pf2 = new PaymentForm2(0, f.ID_FAKTURY); } else { pf2 = new PaymentForm2(table[0].idWplaty, f.ID_FAKTURY); } pf2.ShowDialog(); } } private void reklama1Button_Click(object sender, EventArgs e) { if (rEKLAMABindingSource.Current != null) { DataRowView row = (DataRowView)rEKLAMABindingSource.Current; REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)row.Row; int id = reklama.ReklamaID; OrderDetails.getOrderDetails().pokazSzczegolyZamowienia(id); if (OrderDetails.getOrderDetails().ShowDialog() == DialogResult.OK) { rEKLAMATableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.REKLAMA, reklama.idZamowienia); rEKLAMABindingSource.Position = rEKLAMABindingSource.Find("reklamaId", id); } } } private void reklama2Button_Click(object sender, EventArgs e) { if (rEKLAMABindingSource1.Current != null) { DataRowView row = (DataRowView)rEKLAMABindingSource1.Current; REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)row.Row; int id = reklama.ReklamaID; OrderDetails.getOrderDetails().pokazSzczegolyZamowienia(id); if (OrderDetails.getOrderDetails().ShowDialog() == DialogResult.OK) { ReklamyBezZamowienia = rEKLAMATableAdapter.GetDataByCustomerIdandIdZamowienia(klient.CustomerID); rEKLAMABindingSource1.Position = rEKLAMABindingSource1.Find("reklamaId", id); } } } private void fAKTURYBindingSource_CurrentChanged(object sender, EventArgs e) { if (fAKTURYBindingSource.Current != null) { if ( ((REKLAMADataSet.FAKTURYRow) ((DataRowView)fAKTURYBindingSource.Current).Row).KOREKTA) { wplataButton.Enabled = false; } else { wplataButton.Enabled = true; } } } private void zamowieniaBindingSource_CurrentChanged(object sender, EventArgs e) { if (zamowieniaBindingSource.Current != null) { DataRowView z = (DataRowView)zamowieniaBindingSource.Current; REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row; rEKLAMATableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.REKLAMA, zamowienie.idZamowienia); fAKTURYTableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.FAKTURY, zamowienie.idZamowienia); dodajDoZamButton.Enabled = !zamowienie.zafakturowanoWszystko; usunZZamButton.Enabled = !zamowienie.zafakturowanoWszystko; } } private void usunFaktureButton_Click(object sender, EventArgs e) { if (fAKTURYBindingSource.Current != null) { if ( MessageBox.Show("Czy na pewno chcesz usunąć fakturę ?", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { this.Cursor = Cursors.WaitCursor; REKLAMADataSet.FAKTURYRow faktura = (REKLAMADataSet.FAKTURYRow) ((DataRowView)fAKTURYBindingSource.Current).Row; if (faktura.KOREKTA) { int i = fAKTURYBindingSource.Find("idFakturyKorekta",faktura.ID_FAKTURY); if (i > -1) { MessageBox.Show("Nie można usunąć faktury"); } else { usunKorekte(faktura); } } else { usunFakture(faktura); } this.Cursor = Cursors.Default; } } } private void usunKorekte(REKLAMADataSet.FAKTURYRow korekta) { int idKorekty = korekta.ID_FAKTURY; int idKorygowanejFaktury = korekta.idFakturyKorekta; int idZam = korekta.idZamowienia; int i = fAKTURYBindingSource.Find("ID_FK_KOR",idKorekty); REKLAMADataSet.FAKTURYRow korygowanaFaktura = (REKLAMADataSet.FAKTURYRow) ((DataRowView)fAKTURYBindingSource.List[i]).Row; int j = fAKTURYBindingSource.Find("ID_FAKTURY",idKorygowanejFaktury); if (j > -1 && i!= j) { REKLAMADataSet.FAKTURYRow poprzedniaKorekta = (REKLAMADataSet.FAKTURYRow) ((DataRowView)fAKTURYBindingSource.List[j]).Row; korygowanaFaktura.ID_FK_KOR = poprzedniaKorekta.ID_FAKTURY; } else { korygowanaFaktura.SetID_FK_KORNull(); } fAKTURYBindingSource.EndEdit(); SqlConnection conn = new SqlConnection(ConnString.getConnString().Value); fAKTURYTableAdapter.Connection = conn; fakturyDetailsTableAdapter.Connection = conn; conn.Open(); SqlTransaction transaction = conn.BeginTransaction(); fAKTURYTableAdapter.AttachTransaction(transaction); fakturyDetailsTableAdapter.AttachTransaction(transaction); try { fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY); fAKTURYTableAdapter.Delete(idKorekty); fakturyDetailsTableAdapter.Delete(idKorekty); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw ex; } finally { fAKTURYTableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.FAKTURY, idZam); conn.Close(); } } private void usunFakture(REKLAMADataSet.FAKTURYRow faktura) { int idFakt = faktura.ID_FAKTURY; int idZam = faktura.idZamowienia; bool zmienReklamyOrazZamowienie = false; if (this.fAKTURYBindingSource.List.Count == 1) { zmienReklamyOrazZamowienie = true; } this.emisjeTableAdapter.ClearBeforeFill = false; this.emisjeTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.UKAZE_SIE_W_NR, idFakt); foreach (DataRow r in this.rEKLAMADataSet.UKAZE_SIE_W_NR.Rows) { REKLAMADataSet.UKAZE_SIE_W_NRRow row = (REKLAMADataSet.UKAZE_SIE_W_NRRow)r; row.SetidFakturyNull(); row.SetnettoNull(); row.zafakturowana = false; row.EndEdit(); } DataRowView zam = (DataRowView)zamowieniaBindingSource.Current; REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)zam.Row; if (zmienReklamyOrazZamowienie) { foreach (DataRow r in this.rEKLAMADataSet.REKLAMA.Rows) { REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)r; reklama.FAKTURA_WYSTAWIONO = false; reklama.EndEdit(); } zamowienie.zafakturowano = false; zamowienie.zafakturowanoWszystko = false; } zamowienie.SetdataOstatniejZafakturowanejEmisjiNull(); zamowienie.EndEdit(); SqlConnection conn = new SqlConnection(ConnString.getConnString().Value); fAKTURYTableAdapter.Connection = conn; emisjeTableAdapter.Connection = conn; zamowieniaTableAdapter.Connection = conn; fakturyDetailsTableAdapter.Connection = conn; rEKLAMATableAdapter.Connection = conn; conn.Open(); SqlTransaction transaction = conn.BeginTransaction(); fAKTURYTableAdapter.AttachTransaction(transaction); emisjeTableAdapter.AttachTransaction(transaction); zamowieniaTableAdapter.AttachTransaction(transaction); fakturyDetailsTableAdapter.AttachTransaction(transaction); rEKLAMATableAdapter.AttachTransaction(transaction); try { fAKTURYTableAdapter.Delete(idFakt); fakturyDetailsTableAdapter.Delete(idFakt); wplatyTableAdapter.Delete(idFakt); emisjeTableAdapter.Update(this.rEKLAMADataSet.UKAZE_SIE_W_NR); zamowieniaTableAdapter.Update(this.rEKLAMADataSet.zamowienia); rEKLAMATableAdapter.Update(this.rEKLAMADataSet.REKLAMA); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); } finally { this.rEKLAMADataSet.UKAZE_SIE_W_NR.Clear(); fAKTURYTableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.FAKTURY, idZam); conn.Close(); } } private void proformaButton_Click(object sender, EventArgs e) { if (zamowieniaBindingSource.Current != null) { this.Cursor = Cursors.WaitCursor; DataRowView z = (DataRowView)zamowieniaBindingSource.Current; REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row; REKLAMADataSet.KLIENCIRow klient = (REKLAMADataSet.KLIENCIRow)this.klienciTableAdapter.GetDataByCustomerId(zamowienie.idKlienta).Rows[0]; string errorMessage = czyMoznaZafakturowac(zamowienie, klient); if (errorMessage != string.Empty) { MessageBox.Show(errorMessage); this.Cursor = Cursors.Default; return; } int id = wystawFakture(zamowienie, klient); FactureViewer fv = new FactureViewer(id,true); fv.ShowDialog(); DataRow[] rows = this.rEKLAMADataSet.FAKTURY.Select("id_faktury=" + id); usunFakture((REKLAMADataSet.FAKTURYRow)rows[0]); this.Cursor = Cursors.Default; } } } }