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 FacturesForm : Form { string query= "SELECT top 2000 FAKTURY.ID_NABYWCY, FAKTURY.NUMER, YEAR(FAKTURY.DATA_SPRZEDAZY) AS ROK," + "MONTH(FAKTURY.DATA_SPRZEDAZY) AS MS, FAKTURY.DATA_SPRZEDAZY, CONVERT(VARCHAR, FAKTURY.NUMER) + '/' + " + "CONVERT(VARCHAR, FAKTURY.NUMER_ROZ) + '/' + CONVERT(VARCHAR, FAKTURY.NUMER_ROK) AS NR_FK, [LISTA TYTUŁÓW].SYMB " + "AS TYTUL, SUM(FAKTURA_DETAILS.NETTO) AS NETTO, FAKTURA_DETAILS.S_VAT, SUM(FAKTURA_DETAILS.VAT) AS VAT, " + "SUM(FAKTURA_DETAILS.BRUTTO) AS BRUTTO, FAKTURY.suma_zaplat, FAKTURY.ID_FAKTURY, AGENCI.Symbol, "+ "AGENCJE.Symbol AS Agencja,FAKTURY.ZAPLACONO,REKLAMA.ZAPŁACONO,reklama.[DATA ZAPŁATY],FAKTURY.zaplata_data,reklama.[reklamaId], KLIENCI.firstname, FAKTURY.TERMIN_ZAPLATY FROM FAKTURY LEFT JOIN FAKTURA_DETAILS ON FAKTURY.ID_FAKTURY = " + "FAKTURA_DETAILS.ID_FAKTURY LEFT JOIN [LISTA TYTUŁÓW] ON FAKTURY.ID_TYTUL = [LISTA TYTUŁÓW].id LEFT JOIN " + "AGENCI ON FAKTURY.NUMER_ROZ = AGENCI.F_ROZ LEFT JOIN AGENCJE ON AGENCI.ID_AGENCJI = AGENCJE.Id_agencji " + " LEFT JOIN REKLAMA ON FAKTURY.[id_faktury] = reklama.[id_faktury] " + " LEFT OUTER JOIN KLIENCI ON FAKTURY.ID_NABYWCY = KLIENCI.customerId " + "GROUP BY FAKTURY.ID_NABYWCY, FAKTURY.NUMER,FAKTURY.NUMER_ROZ, YEAR(FAKTURY.DATA_SPRZEDAZY), FAKTURY.DATA_SPRZEDAZY, " + "CONVERT(VARCHAR, FAKTURY.NUMER) + '/' + CONVERT(VARCHAR, FAKTURY.NUMER_ROZ) + '/' + CONVERT(VARCHAR, FAKTURY.NUMER_ROK)," + "FAKTURY.suma_zaplat, FAKTURA_DETAILS.S_VAT, FAKTURY.ID_FAKTURY, [LISTA TYTUŁÓW].SYMB, AGENCI.Symbol, AGENCJE.Symbol,FAKTURY.ZAPLACONO,reklama.[DATA ZAPŁATY], FAKTURY.zaplata_data, reklama.[reklamaId],REKLAMA.ZAPŁACONO, KLIENCI.firstname, FAKTURY.TERMIN_ZAPLATY, Reklama.GRZBIET,FAKTURY.ID_TYTUL"; private static FacturesForm fakturesForm; private SqlCommand command; private SqlDataAdapter sqlDataAdapter; private bool commandExecuted = false; public static FacturesForm getFacturesForm(MDIBazaReklam parent) { if (fakturesForm == null){ fakturesForm = new FacturesForm(parent); } return fakturesForm; } private FacturesForm(MDIBazaReklam parent) { InitializeComponent(); this.MdiParent = parent; //podmiana connstringa zestawienieFakturTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; reklamaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; //obiekty wykorzytywane przy wyszukiwaniu SqlConnection conn = new SqlConnection(ConnString.getConnString().Value); command = new SqlCommand(); command.CommandType = CommandType.Text; command.Connection = conn; this.sqlDataAdapter = new SqlDataAdapter(); //generuje piersze węzły w drzewie generateNodes(); //ustawia domyslny rok i miesiąc w pasku wyszukiwania rokToolStripTextBox.Text = DateTime.Today.Year.ToString(); miesiacToolStripTextBox.Text = DateTime.Today.Month.ToString(); wyszukajToolStrip.Items.Insert(14, new ToolStripLabel("nieuregulowane:")); wyszukajToolStrip.Items.Insert(15, new ToolStripControlHost(new CheckBox(), "zalegleCheckBox")); ((CheckBox)((ToolStripControlHost)wyszukajToolStrip.Items["zalegleCheckBox"]).Control).ThreeState = true; ((CheckBox)((ToolStripControlHost)wyszukajToolStrip.Items["zalegleCheckBox"]).Control).CheckState = CheckState.Indeterminate; } private void FacturesForm_Load(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized; DBBindings.bindujGrzbiety2(grzbietToolStripComboBox); DBBindings.bindujAgencje(agencjaToolStripComboBox); DBBindings.bindujTytuly2(tytulToolStripComboBox); command.CommandText = this.query; sqlDataAdapter.SelectCommand = command; } private void generateNodes() { TreeNode node; node = new TreeNode("Wpłaty - księgowość"); node.Name = "WplatyKsiegowosc"; treeView1.Nodes.Add(node); node = new TreeNode("Różnice wpłat"); node.Nodes.Add(new TreeNode()); node.Name = "BrakWKsiegowosci"; treeView1.Nodes["WplatyKsiegowosc"].Nodes.Add(node); node = new TreeNode("Brak w reklamie"); node.Nodes.Add(new TreeNode()); node.Name = "BrakWReklamie"; treeView1.Nodes["WplatyKsiegowosc"].Nodes.Add(node); command.Connection.Close(); } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { if (e.Node != null) { command.CommandText = query; command.Parameters.Clear(); switch (e.Node.Level) { case 0: break; case 1: switch (e.Node.Parent.Name) { case "WplatyKsiegowosc": break; default: break; } break; case 2: switch (e.Node.Parent.Parent.Name) { case "WplatyKsiegowosc": switch (e.Node.Parent.Name) { case "BrakWKsiegowosci": this.Cursor = Cursors.WaitCursor; rEKLAMADataSet.ZestawienieFaktur.Clear(); command.CommandText += " HAVING YEAR(reklama.[DATA ZAPŁATY]) = @rok AND (FAKTURY.suma_zaplat is null OR (CONVERT(int, FAKTURY.suma_zaplat * 100) <> CONVERT(int, SUM(FAKTURA_DETAILS.BRUTTO) * 100))) order by reklama.[DATA ZAPŁATY]"; command.Parameters.AddWithValue("@rok", e.Node.Name); sqlDataAdapter.Fill(this.rEKLAMADataSet.ZestawienieFaktur); commandExecuted = true; fakturyDataGridView.Refresh(); this.Cursor = Cursors.Default; break; case "BrakWReklamie": this.Cursor = Cursors.WaitCursor; rEKLAMADataSet.ZestawienieFaktur.Clear(); command.CommandText += " HAVING YEAR(FAKTURY.DATA_SPRZEDAZY) = @rok AND (FAKTURY.suma_zaplat is not null AND FAKTURY.suma_zaplat<>0) AND (reklama.[DATA ZAPŁATY] is null) order by FAKTURY.DATA_SPRZEDAZY"; command.Parameters.AddWithValue("@rok", e.Node.Name); sqlDataAdapter.Fill(this.rEKLAMADataSet.ZestawienieFaktur); commandExecuted = true; fakturyDataGridView.Refresh(); this.Cursor = Cursors.Default; break; default: break; } break; default: break; } break; case 3: switch (e.Node.Parent.Parent.Parent.Name) { case "WplatyKsiegowosc": switch (e.Node.Parent.Parent.Name) { case "BrakWKsiegowosci": this.Cursor = Cursors.WaitCursor; rEKLAMADataSet.ZestawienieFaktur.Clear(); command.CommandText += " HAVING YEAR(reklama.[DATA ZAPŁATY]) = @rok AND MONTH(reklama.[DATA ZAPŁATY]) = @miesiac AND (FAKTURY.suma_zaplat is null OR (CONVERT(int, FAKTURY.suma_zaplat * 100) <> CONVERT(int, SUM(FAKTURA_DETAILS.BRUTTO) * 100))) order by reklama.[DATA ZAPŁATY]"; command.Parameters.AddWithValue("@rok", e.Node.Parent.Name); command.Parameters.AddWithValue("@miesiac", e.Node.Name); sqlDataAdapter.Fill(this.rEKLAMADataSet.ZestawienieFaktur); commandExecuted = true; fakturyDataGridView.Refresh(); this.Cursor = Cursors.Default; break; case "BrakWReklamie": this.Cursor = Cursors.WaitCursor; rEKLAMADataSet.ZestawienieFaktur.Clear(); command.CommandText += " HAVING YEAR(FAKTURY.DATA_SPRZEDAZY) = @rok AND MONTH(FAKTURY.DATA_SPRZEDAZY) = @miesiac AND (FAKTURY.suma_zaplat is not null AND FAKTURY.suma_zaplat<>0) AND (reklama.[DATA ZAPŁATY] is null) order by FAKTURY.DATA_SPRZEDAZY"; command.Parameters.AddWithValue("@rok", e.Node.Parent.Name); command.Parameters.AddWithValue("@miesiac", e.Node.Name); sqlDataAdapter.Fill(this.rEKLAMADataSet.ZestawienieFaktur); commandExecuted = true; fakturyDataGridView.Refresh(); this.Cursor = Cursors.Default; break; } break; default: break; } break; case 4: switch (e.Node.Parent.Parent.Parent.Parent.Name) { case "WplatyKsiegowosc": break; default: break; } break; default: break; } } } private void treeView1_AfterExpand(object sender, TreeViewEventArgs e) { TreeNode node; SqlDataReader reader; if (e.Node != null) { switch (e.Node.Level) { case 0: break; case 1: switch (e.Node.Parent.Name) { case "WplatyKsiegowosc": switch (e.Node.Name) { case "BrakWKsiegowosci": e.Node.Nodes.Clear(); command.CommandText = "select distinct datepart(year,DATA_W) as rok from dbo.NR where datepart(year,DATA_W) is not null order by rok desc"; command.Connection.Open(); reader = command.ExecuteReader(); while (reader.Read()) { node = new TreeNode(reader.GetValue(0).ToString()); node.Name = reader.GetValue(0).ToString(); for (int i = 12; i >= 1; i--) { TreeNode node2 = new TreeNode(i.ToString()); node2.Name = i.ToString(); //node2.Nodes.Add(new TreeNode()); node.Nodes.Add(node2); } e.Node.Nodes.Add(node); } command.Connection.Close(); break; case "BrakWReklamie": e.Node.Nodes.Clear(); command.CommandText = "select distinct datepart(year,DATA_W) as rok from dbo.NR where datepart(year,DATA_W) is not null order by rok desc"; command.Connection.Open(); reader = command.ExecuteReader(); while (reader.Read()) { node = new TreeNode(reader.GetValue(0).ToString()); node.Name = reader.GetValue(0).ToString(); for (int i = 12; i >= 1; i--) { TreeNode node2 = new TreeNode(i.ToString()); node2.Name = i.ToString(); //node2.Nodes.Add(new TreeNode()); node.Nodes.Add(node2); } e.Node.Nodes.Add(node); } command.Connection.Close(); break; } break; default: e.Node.Nodes.Clear(); node = new TreeNode("Biura"); node.Name = "Biura"; node.Nodes.Add(new TreeNode()); e.Node.Nodes.Add(node); break; } break; case 2: switch (e.Node.Name) { case "Biura": DBBindings.dodajAgencjeDoWezla(e.Node); break; default: break; } break; case 3: switch (e.Node.Parent.Name) { case "Biura": DBBindings.dodajAgentowDoWezla(e.Node, e.Node.Name); break; default: break; } break; case 4: break; default: break; } } } private void fakturyDataGridView_CellLeave(object sender, DataGridViewCellEventArgs e) { zestawienieFakturBindingSource.CancelEdit(); } private void zamToolStripButton_Click(object sender, EventArgs e) { if (zestawienieFakturBindingSource.Current != null) { DataRowView row = (DataRowView)zestawienieFakturBindingSource.Current; if (row["reklamaId"] != DBNull.Value) { int idRek = Convert.ToInt32(row["reklamaId"]); OrderDetails.getOrderDetails().pokazSzczegolyZamowienia(idRek); OrderDetails.getOrderDetails().ShowDialog(); /* OrderDetails od = new OrderDetails(); od.pokazSzczegolyZamowienia(idRek); DialogResult result = od.ShowDialog();*/ } } } private void faktToolStripButton_Click(object sender, EventArgs e) { if (zestawienieFakturBindingSource.Current != null) { DataRowView row = (DataRowView)zestawienieFakturBindingSource.Current; if (row["reklamaId"] != DBNull.Value) { int idRek = Convert.ToInt32(row["reklamaId"]); Facturer f = new Facturer(idRek); DialogResult result = f.ShowDialog(); } } } private void odswiezToolStripButton_Click(object sender, EventArgs e) { if (commandExecuted) { this.Cursor = Cursors.WaitCursor; rEKLAMADataSet.ZestawienieFaktur.Clear(); sqlDataAdapter.Fill(this.rEKLAMADataSet.ZestawienieFaktur); fakturyDataGridView.Refresh(); this.Cursor = Cursors.Default; } } private void wyszukajToolStripButton_Click(object sender, EventArgs e) { wyszukajToolStrip.Visible = wyszukajToolStrip.Visible ? false : true; } private void szukajToolStripButton_Click(object sender, EventArgs e) { command.CommandText = query; this.rEKLAMADataSet.ZestawienieFaktur.Clear(); command.CommandText += " HAVING 1=1 "; command.Parameters.Clear(); if (nrFakturyToolStripTextBox.Text.Trim() != "") { int i; if (!Int32.TryParse(nrFakturyToolStripTextBox.Text, out i)) { MessageBox.Show("Podaj prawidłowy numer faktury."); return; } command.CommandText += " AND FAKTURY.NUMER=@nr"; command.Parameters.AddWithValue("@nr", nrFakturyToolStripTextBox.Text.Trim()); } if (kodRozliczeniowyToolStripTextBox.Text.Trim() != "") { command.CommandText += " AND FAKTURY.NUMER_ROZ=@kod"; command.Parameters.AddWithValue("@kod", kodRozliczeniowyToolStripTextBox.Text.Trim()); } if (rokToolStripTextBox.Text.Trim() != "") { int i; if (!Int32.TryParse(rokToolStripTextBox.Text.Trim(), out i)) { MessageBox.Show("Podaj prawidłowy rok."); return; } command.CommandText += " AND YEAR(FAKTURY.DATA_SPRZEDAZY)=@rok"; command.Parameters.AddWithValue("@rok", rokToolStripTextBox.Text.Trim()); } if (miesiacToolStripTextBox.Text.Trim() != "") { int i; if (!Int32.TryParse(miesiacToolStripTextBox.Text.Trim(), out i)) { MessageBox.Show("Podaj prawidłowy miesiąc."); return; } command.CommandText += " AND MONTH(FAKTURY.DATA_SPRZEDAZY)=@miesiac"; command.Parameters.AddWithValue("@miesiac", miesiacToolStripTextBox.Text.Trim()); } if (agencjaToolStripComboBox.Text.Trim() != "") { command.CommandText += " AND AGENCJE.Symbol=@agencja"; command.Parameters.AddWithValue("@agencja", agencjaToolStripComboBox.Text.Trim()); } if (((CheckBox)((ToolStripControlHost)wyszukajToolStrip.Items["zalegleCheckBox"]).Control).CheckState == CheckState.Checked) { command.CommandText += " AND (SUM(FAKTURA_DETAILS.BRUTTO) - FAKTURY.suma_zaplat) > 0"; } else if (((CheckBox)((ToolStripControlHost)wyszukajToolStrip.Items["zalegleCheckBox"]).Control).CheckState == CheckState.Unchecked) { command.CommandText += " AND (SUM(FAKTURA_DETAILS.BRUTTO) - FAKTURY.suma_zaplat) <= 0 "; } if (((ComboBox)grzbietToolStripComboBox.Control).SelectedItem != null) { command.CommandText += " AND (Reklama.GRZBIET = @grzbiet) "; command.Parameters.AddWithValue("@grzbiet", (((BoundItem)(grzbietToolStripComboBox.SelectedItem)).IDEvalue1)); } if (tytulToolStripComboBox.SelectedItem != null) { command.CommandText += " AND (FAKTURY.ID_TYTUL= @tytul) "; command.Parameters.AddWithValue("@tytul", ((BoundItem)tytulToolStripComboBox.SelectedItem).IDEvalue1); } //MessageBox.Show(command.CommandText + nrFakturyToolStripTextBox.Text); sqlDataAdapter.SelectCommand = command; this.Cursor = Cursors.WaitCursor; try { int t = sqlDataAdapter.Fill(this.rEKLAMADataSet.ZestawienieFaktur); commandExecuted = true; //MessageBox.Show(t.ToString()); } catch (Exception e1) { MessageBox.Show(e1.Message); } treeView1.CollapseAll(); treeView1.SelectedNode = null; this.Cursor = Cursors.Default; } private void fakturyDataGridView_Leave(object sender, EventArgs e) { fakturyDataGridView.EndEdit(); } private void kryteriumWyszukiwania_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == 13) { wyszukajToolStripButton.PerformClick(); } } /// /// Podsumowuje brutto i zaplate z wyswietlonych faktur /// private void podsumuj() { if (zestawienieFakturBindingSource.List.Count != 0) { decimal brutto = Convert.ToDecimal(rEKLAMADataSet.ZestawienieFaktur.Compute("Sum(BRUTTO)","")); decimal netto = Convert.ToDecimal(rEKLAMADataSet.ZestawienieFaktur.Compute("Sum(netto)", "")); bruttoTextBox.Text = String.Format("{0:C}", brutto); zaplataTextBox.Text = String.Format("{0:C}", netto); } else { bruttoTextBox.Clear(); zaplataTextBox.Clear(); } } private void zestawienieFakturBindingSource_ListChanged(object sender, ListChangedEventArgs e) { podsumuj(); } private void toolStripButton1_Click(object sender, EventArgs e) { PrintDGV.Print_DataGridView(fakturyDataGridView,50); } private void wyczyscPolaToolStripButton_Click(object sender, EventArgs e) { rEKLAMADataSet.ZestawienieFaktur.Clear(); nrFakturyToolStripTextBox.Clear(); kodRozliczeniowyToolStripTextBox.Clear(); rokToolStripTextBox.Clear(); miesiacToolStripTextBox.Clear(); agencjaToolStripComboBox.SelectedIndex = -1; agencjaToolStripComboBox.Text = ""; ((CheckBox)((ToolStripControlHost)wyszukajToolStrip.Items["zalegleCheckBox"]).Control).CheckState = CheckState.Indeterminate; grzbietToolStripComboBox.SelectedIndex = -1; grzbietToolStripComboBox.Text = ""; tytulToolStripComboBox.SelectedIndex = -1; } private void wplataToolStripButton_Click(object sender, EventArgs e) { if (zestawienieFakturBindingSource.Current != null) { DataRowView row = (DataRowView)zestawienieFakturBindingSource.Current; if (row["reklamaId"] != DBNull.Value) { int idRek = Convert.ToInt32(row["reklamaId"]); PaymentForm p = new PaymentForm(idRek); p.ShowDialog(); /* if (p.ShowDialog() == DialogResult.OK) { this.rEKLAMADataSet.ReklamyZestawienie.Clear(); sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie); fakturyDataGridView.Refresh(); }*/ } } } private void podgladToolStripButton_Click(object sender, EventArgs e) { if (zestawienieFakturBindingSource.Current != null) { DataRowView row = (DataRowView)zestawienieFakturBindingSource.Current; if (row["id_faktury"] != DBNull.Value) { this.Cursor = Cursors.WaitCursor; int idFaktury = Convert.ToInt32(row["id_faktury"]); FactureViewer fv = new FactureViewer(idFaktury, true, 0); fv.ShowDialog(); this.Cursor = Cursors.Default; } } } /// /// Przechodzi do okna KLIENCI i wyświetla dane klienta związanego z fakturą. /// private void klientToolStripButton_Click(object sender, EventArgs e) { if (zestawienieFakturBindingSource.Current != null) { DataRowView row = (DataRowView)zestawienieFakturBindingSource.Current; int custID = Convert.ToInt32(row["ID_NABYWCY"]); ClientsForm.getClientsForm((MDIBazaReklam)this.MdiParent).pokazKlienta(custID); this.Hide(); ClientsForm.getClientsForm((MDIBazaReklam)this.MdiParent).Show(); } } private void FacturesForm_Shown(object sender, EventArgs e) { if (User.getUser().St_kierownik) { agencjaToolStripComboBox.Text = User.getUser().SymbolAgencji; } else if (User.getUser().St_handlowiec | User.getUser().St_subhandlowiec) { kodRozliczeniowyToolStripTextBox.Text = User.getUser().Kod_agenta; } } private void excelToolStripButton_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; ExcelHandler ex = new ExcelHandler(); ex.exportToExcel(fakturyDataGridView); this.Cursor = Cursors.Default; } } }