using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Globalization; using System.Data.SqlClient; namespace Baza_Reklam { public partial class FakturowaniePoznanKatowice : Form { SLOWNIKDataSet.AGENCJERow agencjaPoznan; SLOWNIKDataSet.AGENCJERow agencjaKatowice; SLOWNIKDataSet.AGENCJERow agencjaRedakcja; SLOWNIKDataSet.KONTARow konto; REKLAMADataSet.KLIENCIRow klientPoznan; REKLAMADataSet.KLIENCIRow klientKatowice; public FakturowaniePoznanKatowice() { InitializeComponent(); this.fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.fakturA_DETAILSTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.klienciTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.agencjeTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.kontaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; this.wplatyTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; dtpZmianaDaty.Value = DateTime.Today; dtpZmianaDaty.MaxDate = DateTime.Today; nrTygodniaUpDown.Minimum = 1; nrTygodniaUpDown.Maximum = 53; CultureInfo ciCurr = CultureInfo.CurrentCulture; int weekNum = ciCurr.Calendar.GetWeekOfYear(DateTime.Today, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); nrTygodniaUpDown.Value = weekNum; } private void FakturowaniePoznanKatowice_Load(object sender, EventArgs e) { agencjaPoznan = (SLOWNIKDataSet.AGENCJERow)this.agencjeTableAdapter.GetDataByIdAgencji(6)[0]; agencjaKatowice = (SLOWNIKDataSet.AGENCJERow)this.agencjeTableAdapter.GetDataByIdAgencji(4)[0]; agencjaRedakcja = (SLOWNIKDataSet.AGENCJERow)this.agencjeTableAdapter.GetDataByIdAgencji(2)[0]; konto = (SLOWNIKDataSet.KONTARow)this.kontaTableAdapter.GetDataById(43)[0]; klientKatowice = (REKLAMADataSet.KLIENCIRow)this.klienciTableAdapter.GetDataByCustomerId(678)[0]; klientPoznan = (REKLAMADataSet.KLIENCIRow)this.klienciTableAdapter.GetDataByCustomerId(18845)[0]; } private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { if (agencjaListBox.SelectedItem != null) { this.fAKTURYTableAdapter.FillByKodAgenta(this.rEKLAMADataSet.FAKTURY, agencjaListBox.SelectedItem.ToString()); } } private void fakturaButton_Click(object sender, EventArgs e) { REKLAMADataSet.FAKTURYRow naglowekFaktury = null; try { switch (agencjaListBox.SelectedItem.ToString()) { case "POZ": naglowekFaktury = utworzNaglowekFaktury(klientPoznan, agencjaPoznan); break; case "KAT": naglowekFaktury = utworzNaglowekFaktury(klientKatowice, agencjaKatowice); break; } this.rEKLAMADataSet.FAKTURY.AddFAKTURYRow(naglowekFaktury); utworzPozycjeFaktury(naglowekFaktury); dodajWplate(naglowekFaktury); SqlConnection conn = new SqlConnection(ConnString.getConnString().Value); fAKTURYTableAdapter.Connection = conn; fakturA_DETAILSTableAdapter.Connection = conn; wplatyTableAdapter.Connection = conn; conn.Open(); SqlTransaction transaction = conn.BeginTransaction(); fAKTURYTableAdapter.AttachTransaction(transaction); fakturA_DETAILSTableAdapter.AttachTransaction(transaction); wplatyTableAdapter.AttachTransaction(transaction); try { fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY); fakturA_DETAILSTableAdapter.Update(this.rEKLAMADataSet.FAKTURA_DETAILS); wplatyTableAdapter.Update(this.rEKLAMADataSet.Wplaty); transaction.Commit(); dtpZmianaDaty.Value = DateTime.Today; } catch (Exception e1) { transaction.Rollback(); conn.Close(); this.rEKLAMADataSet.FAKTURA_DETAILS.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.FAKTURA_DETAILS.Clear(); this.rEKLAMADataSet.Wplaty.Clear(); this.fAKTURYBindingSource.ResetBindings(false); this.fAKTURYBindingSource.Sort = "NUMER"; this.fAKTURYDataGridView.Refresh(); } } 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 = null; switch (agencjaListBox.SelectedItem.ToString()) { case "POZ": naglowekKorekty = utworzNaglowekKorekty(faktura); break; case "KAT": naglowekKorekty = utworzNaglowekKorekty(faktura); break; } utworzPozycjeFakturyKorekty(naglowekKorekty); if (!faktura.IsID_FK_KORNull()) { naglowekKorekty.idFakturyKorekta = faktura.ID_FK_KOR; } SqlConnection conn = new SqlConnection(ConnString.getConnString().Value); fAKTURYTableAdapter.Connection = conn; fakturA_DETAILSTableAdapter.Connection = conn; conn.Open(); SqlTransaction transaction = conn.BeginTransaction(); fAKTURYTableAdapter.AttachTransaction(transaction); fakturA_DETAILSTableAdapter.AttachTransaction(transaction); try { fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY); faktura.ID_FK_KOR = naglowekKorekty.ID_FAKTURY; faktura.EndEdit(); fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY); fakturA_DETAILSTableAdapter.Update(this.rEKLAMADataSet.FAKTURA_DETAILS); 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.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.idFakturyKorekta = faktura.ID_FAKTURY; naglowekKorekty.idFakturyVAT = 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.idZamowienia = 148; naglowekKorekty.ID_SPRZEDAWCY = faktura.ID_SPRZEDAWCY; 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(30); naglowekKorekty.opis = "rezygnacja z emisji reklamy"; naglowekKorekty.SPOSOB_ZAPLATY = faktura.SPOSOB_ZAPLATY; naglowekKorekty.ZAPLACONO = false; naglowekKorekty.FAKTURA_TYP = 2; naglowekKorekty.FAKTURA_PODTYP = 1; naglowekKorekty.ID_KONTA = faktura.ID_KONTA; this.rEKLAMADataSet.FAKTURY.AddFAKTURYRow(naglowekKorekty); return naglowekKorekty; } private REKLAMADataSet.FAKTURYRow utworzNaglowekFaktury(REKLAMADataSet.KLIENCIRow klientAgencja, SLOWNIKDataSet.AGENCJERow agencja) { REKLAMADataSet.FAKTURYRow naglowekFaktury = (REKLAMADataSet.FAKTURYRow)this.rEKLAMADataSet.FAKTURY.NewRow(); naglowekFaktury.NUMER_ROZ = agencjaListBox.SelectedItem.ToString(); naglowekFaktury.NUMER = Utils.numerNowejFaktury(naglowekFaktury.NUMER_ROZ, DateTime.Today.Year); naglowekFaktury.NUMER_ROK = DateTime.Today.Year; naglowekFaktury.DATA_WYSTAWIENIA = DateTime.Today; if (dtpZmianaDaty.Value != DateTime.Today) { naglowekFaktury.DATA_WYSTAWIENIA = dtpZmianaDaty.Value; } naglowekFaktury.idZamowienia = 148; naglowekFaktury.ID_SPRZEDAWCY = agencja.Id_agencji; naglowekFaktury.EKSPORT = false; naglowekFaktury.MIEJSCOWOSC_WYSTAWIENIA = agencjaRedakcja.miasto; naglowekFaktury.SPRZEDAWCA_ADRES = agencjaRedakcja.Adres_Fk; naglowekFaktury.SPRZEDAWCA_NIP = agencjaRedakcja.NIP; naglowekFaktury.PODPIS_WYSTAWIL = string.Empty; naglowekFaktury.DATA_SPRZEDAZY = naglowekFaktury.DATA_WYSTAWIENIA; naglowekFaktury.ID_NABYWCY = klientAgencja.CustomerID; naglowekFaktury.NABYWCA_ADRES = klientAgencja.Adres_Fkatura; naglowekFaktury.NABYWCA_NIP = klientAgencja.Nip; naglowekFaktury.opis = string.Empty; naglowekFaktury.SPOSOB_ZAPLATY = "Przelew"; naglowekFaktury.TERMIN_ZAPLATY = naglowekFaktury.DATA_SPRZEDAZY.AddDays(30); naglowekFaktury.ZAPLACONO = false; naglowekFaktury.FAKTURA_TYP = 2; naglowekFaktury.FAKTURA_PODTYP = 1; naglowekFaktury.ID_KONTA = Convert.ToInt16(konto.id); naglowekFaktury.EndEdit(); return naglowekFaktury; } private void utworzPozycjeFaktury(REKLAMADataSet.FAKTURYRow naglowekFaktury) { REKLAMADataSet.FAKTURA_DETAILSDataTable pozycjeFakturDlaKlientow = this.fakturA_DETAILSTableAdapter.GetDataByNrTygodniaWRoku( dtpZmianaDaty.Value.Year, nrTygodniaUpDown.Value, naglowekFaktury.ID_SPRZEDAWCY); REKLAMADataSet.FAKTURYDataTable naglowkiFakturDlaKlientow = this.fAKTURYTableAdapter.GetDataByNrTygodniaWRoku( dtpZmianaDaty.Value.Year, nrTygodniaUpDown.Value, naglowekFaktury.ID_SPRZEDAWCY); if (pozycjeFakturDlaKlientow.Rows.Count == 0 || naglowkiFakturDlaKlientow.Rows.Count == 0) { throw new Exception("Nie ma co fakturować"); } foreach (REKLAMADataSet.FAKTURA_DETAILSRow pozycjaFaktury in pozycjeFakturDlaKlientow) { REKLAMADataSet.FAKTURA_DETAILSRow fakturaDetailsRow = this.rEKLAMADataSet.FAKTURA_DETAILS.NewFAKTURA_DETAILSRow(); REKLAMADataSet.FAKTURYRow faktura = naglowkiFakturDlaKlientow.FindByID_FAKTURY(pozycjaFaktury.ID_FAKTURY); fakturaDetailsRow.ROK = pozycjaFaktury.ROK; fakturaDetailsRow.MIESIAC = pozycjaFaktury.MIESIAC; fakturaDetailsRow.TYTUL = pozycjaFaktury.TYTUL; fakturaDetailsRow.NAZWA_USLUGI = faktura != null ? faktura.NUMER + "/" + faktura.NUMER_ROZ + "/" + faktura.NUMER_ROK + " | " + pozycjaFaktury.NAZWA_USLUGI : ""; fakturaDetailsRow.reklamaId = pozycjaFaktury.reklamaId; fakturaDetailsRow.NR_WYDANIA = pozycjaFaktury.NR_WYDANIA; fakturaDetailsRow.CENA_JEDN = pozycjaFaktury.CENA_JEDN; fakturaDetailsRow.ILOSC = 1; fakturaDetailsRow.JM = "szt."; fakturaDetailsRow.UPUST_NETTO = pozycjaFaktury.UPUST_NETTO; fakturaDetailsRow.UPUST_PR = pozycjaFaktury.UPUST_PR; decimal netto = (1 - Convert.ToDecimal(pozycjaFaktury.UPUST_PR)) * pozycjaFaktury.CENA_JEDN; fakturaDetailsRow.NETTO = netto; fakturaDetailsRow.S_VAT = 0.22; decimal VAT = Convert.ToDecimal(0.22); fakturaDetailsRow.VAT = Convert.ToDecimal(Math.Round(VAT * netto, 2)); fakturaDetailsRow.BRUTTO = Convert.ToDecimal(Math.Round((1 + VAT) * netto, 2)); fakturaDetailsRow.TYP = 2; fakturaDetailsRow.PODTYP = 1; fakturaDetailsRow.ID_FAKTURY = naglowekFaktury.ID_FAKTURY; if (!pozycjaFaktury.IswyroznienieNull()) { if (pozycjaFaktury.wyroznienie) { fakturaDetailsRow.wyroznienie = true; } } this.rEKLAMADataSet.FAKTURA_DETAILS.AddFAKTURA_DETAILSRow(fakturaDetailsRow); } } private void utworzPozycjeFakturyKorekty(REKLAMADataSet.FAKTURYRow naglowekFaktury) { REKLAMADataSet.FAKTURA_DETAILSDataTable pozycjeFakturDlaKlientow = this.fakturA_DETAILSTableAdapter.GetDataByNrTygodniaRokZKorekta( naglowekFaktury.ID_SPRZEDAWCY,dtpZmianaDaty.Value.Year, nrTygodniaUpDown.Value); REKLAMADataSet.FAKTURYDataTable naglowkiFakturDlaKlientow = this.fAKTURYTableAdapter.GetDataByNrTygodniaWRokuZKorekta( naglowekFaktury.ID_SPRZEDAWCY,dtpZmianaDaty.Value.Year, nrTygodniaUpDown.Value); if (pozycjeFakturDlaKlientow.Rows.Count == 0 || naglowkiFakturDlaKlientow.Rows.Count == 0) { throw new Exception("Nie ma co fakturować"); } foreach (REKLAMADataSet.FAKTURA_DETAILSRow pozycjaFaktury in pozycjeFakturDlaKlientow) { REKLAMADataSet.FAKTURA_DETAILSRow fakturaDetailsRow = this.rEKLAMADataSet.FAKTURA_DETAILS.NewFAKTURA_DETAILSRow(); REKLAMADataSet.FAKTURYRow faktura = naglowkiFakturDlaKlientow.FindByID_FAKTURY(pozycjaFaktury.ID_FAKTURY); fakturaDetailsRow.ROK = pozycjaFaktury.ROK; fakturaDetailsRow.MIESIAC = pozycjaFaktury.MIESIAC; fakturaDetailsRow.TYTUL = pozycjaFaktury.TYTUL; fakturaDetailsRow.NAZWA_USLUGI = faktura != null ? faktura.NUMER + "/" + faktura.NUMER_ROZ + "/" + faktura.NUMER_ROK + " | " + pozycjaFaktury.NAZWA_USLUGI : ""; fakturaDetailsRow.reklamaId = pozycjaFaktury.reklamaId; fakturaDetailsRow.NR_WYDANIA = pozycjaFaktury.NR_WYDANIA; fakturaDetailsRow.CENA_JEDN = pozycjaFaktury.CENA_JEDN; fakturaDetailsRow.ILOSC = 1; fakturaDetailsRow.JM = "szt."; fakturaDetailsRow.UPUST_NETTO = pozycjaFaktury.UPUST_NETTO; fakturaDetailsRow.UPUST_PR = pozycjaFaktury.UPUST_PR; decimal netto = (1 - Convert.ToDecimal(pozycjaFaktury.UPUST_PR)) * pozycjaFaktury.CENA_JEDN; fakturaDetailsRow.NETTO = netto; fakturaDetailsRow.S_VAT = 0.22; decimal VAT = Convert.ToDecimal(0.22); fakturaDetailsRow.VAT = Convert.ToDecimal(Math.Round(VAT * netto, 2)); fakturaDetailsRow.BRUTTO = Convert.ToDecimal(Math.Round((1 + VAT) * netto, 2)); fakturaDetailsRow.TYP = 2; fakturaDetailsRow.PODTYP = 1; fakturaDetailsRow.ID_FAKTURY = naglowekFaktury.ID_FAKTURY; if (!pozycjaFaktury.IswyroznienieNull()) { if (pozycjaFaktury.wyroznienie) { fakturaDetailsRow.wyroznienie = true; } } this.rEKLAMADataSet.FAKTURA_DETAILS.AddFAKTURA_DETAILSRow(fakturaDetailsRow); } } private void dodajWplate(REKLAMADataSet.FAKTURYRow naglowekFaktury) { REKLAMADataSet.WplatyRow wplata = this.rEKLAMADataSet.Wplaty.NewWplatyRow(); wplata.idFaktury = naglowekFaktury.ID_FAKTURY; wplata.idZamowienia = 148; this.rEKLAMADataSet.Wplaty.AddWplatyRow(wplata); } private void wydrukButton_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.ID_FAKTURY, row.idFakturyVAT, row.idFakturyKorekta); fv.ShowDialog(); } } } 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; fakturA_DETAILSTableAdapter.Connection = conn; conn.Open(); SqlTransaction transaction = conn.BeginTransaction(); fAKTURYTableAdapter.AttachTransaction(transaction); fakturA_DETAILSTableAdapter.AttachTransaction(transaction); try { fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY); fAKTURYTableAdapter.Delete(idKorekty); fakturA_DETAILSTableAdapter.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; SqlConnection conn = new SqlConnection(ConnString.getConnString().Value); fAKTURYTableAdapter.Connection = conn; fakturA_DETAILSTableAdapter.Connection = conn; wplatyTableAdapter.Connection = conn; conn.Open(); SqlTransaction transaction = conn.BeginTransaction(); fAKTURYTableAdapter.AttachTransaction(transaction); fakturA_DETAILSTableAdapter.AttachTransaction(transaction); wplatyTableAdapter.AttachTransaction(transaction); try { fAKTURYTableAdapter.Delete(idFakt); fakturA_DETAILSTableAdapter.Delete(idFakt); wplatyTableAdapter.Delete(idFakt); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); } finally { conn.Close(); } } } }