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 ProvisionForm : Form { private short rok=0; private short miesiac=0; private int agencja=0; /// /// Klasa pomocnicza do wyświetlania w 0 - 2 w gridzie /// class Ocena { private int label; public int Label { get { return label; } set { label = value; } } private Single value; public Single Value { get { return this.value; } set { this.value = value; } } public Ocena(int l, Single v) { label = l; value = v; } } /// /// List do databindings /// List oceny = new List(); private static ProvisionForm provisionForm; public static ProvisionForm getProvisionForm(MDIBazaReklam parent) { if (provisionForm == null) { provisionForm = new ProvisionForm(parent); } return provisionForm; } public ProvisionForm(MDIBazaReklam parent) { InitializeComponent(); this.MdiParent = parent; pLANTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; aGENCITableAdapter.Connection.ConnectionString = ConnString.getConnString().Value; agencjeTableAdapter1.Connection.ConnectionString = ConnString.getConnString().Value; //bindowanie ocen z comboBoxColumn oceny.Add(new Ocena(0,0)); oceny.Add(new Ocena(1,50)); oceny.Add(new Ocena(2,100)); OCENAComboCoxColumn.DataSource = oceny; OCENAComboCoxColumn.DisplayMember = "label"; OCENAComboCoxColumn.ValueMember = "value"; dodajPlanToolStripButton.Enabled = User.getUser().St_kierownik; usunToolStripButton.Enabled = User.getUser().St_kierownik; } private void ProvisionForm_Load(object sender, EventArgs e) { rokToolStripTextBox.Text = DateTime.Today.Year.ToString(); msToolStripTextBox.Text = DateTime.Today.Month.ToString(); ((ComboBox)agencjaToolStripComboBox.Control).DataSource = agencjeTableAdapter1.GetData(); ((ComboBox)agencjaToolStripComboBox.Control).DisplayMember = "Symbol"; ((ComboBox)agencjaToolStripComboBox.Control).ValueMember = "ID_Agencji"; ((ComboBox)agencjaToolStripComboBox.Control).SelectedValue = User.getUser().IdAgencji; if (!User.getUser().St_kierownik) { agencjaToolStripComboBox.Enabled = false; } } private void treeView1_AfterExpand(object sender, TreeViewEventArgs e) { SqlCommand command = new SqlCommand(); command.Connection = new SqlConnection(ConnString.getConnString().Value); if (e.Node != null) { switch (e.Node.Level) { case 0: e.Node.Nodes.Clear(); TreeNode node; command.CommandText = "select distinct datepart(year,DATA_W) as rok from dbo.NR where datepart(year,DATA_W) is not null and datepart(year,DATA_W)>= 2003 order by rok desc"; command.Connection.Open(); SqlDataReader 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 1: break; case 2: break; } } } /// /// Pobiera dane o kontaktach i budżecie. /// private void pobierzDaneToolStripButton_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; SqlCommand command = new SqlCommand(); command.Connection = new SqlConnection(ConnString.getConnString().Value); command.CommandType = CommandType.StoredProcedure; command.CommandText = "PROC_WYLICZ_I_ZAPISZ_DANE_O_KONTAKTACH_I_BUDZECIE"; command.Parameters.AddWithValue("@rok", rok); command.Parameters.AddWithValue("@ms", miesiac); command.Connection.Open(); SqlTransaction transaction = command.Connection.BeginTransaction(); command.Transaction = transaction; try { command.ExecuteNonQuery(); transaction.Commit(); MessageBox.Show("Dane pobrano!"); } catch (Exception ex) { MessageBox.Show(ex.GetType() + ex.Message); try { transaction.Rollback(); } catch (Exception ex2) { MessageBox.Show("ROLLBACK:" + ex2.GetType() + ex2.Message); } } command.Connection.Close(); this.rEKLAMADataSet.PLAN.Clear(); this.pLANTableAdapter.FillByAgencja(this.rEKLAMADataSet.PLAN, rok, miesiac,agencja); this.Cursor = Cursors.Default; } /// /// Wylicza i zapisuje prowizję agenta do planu /// private void zapiszToolStripButton_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; SqlCommand command = new SqlCommand(); command.Connection = new SqlConnection(ConnString.getConnString().Value); command.CommandType = CommandType.StoredProcedure; command.CommandText = "PROC_WYLICZ_I_ZAPISZ_PROWIZJE_AGENTA_DO_PLANU"; command.Parameters.AddWithValue("@rok", rok); command.Parameters.AddWithValue("@ms", miesiac); command.Parameters.AddWithValue("@id_Agencji", agencja); command.Connection.Open(); SqlTransaction transaction = command.Connection.BeginTransaction(); command.Transaction = transaction; try { command.ExecuteNonQuery(); transaction.Commit(); MessageBox.Show("Prowizja została zapisana!"); } catch (Exception ex) { MessageBox.Show(ex.GetType() + ex.Message); try { transaction.Rollback(); } catch (Exception ex2) { MessageBox.Show("ROLLBACK:" + ex2.GetType() + ex2.Message); } } command.Connection.Close(); this.rEKLAMADataSet.PLAN.Clear(); this.pLANTableAdapter.FillByAgencja(this.rEKLAMADataSet.PLAN, rok, miesiac, agencja); this.Cursor = Cursors.Default; } private void naniesNaReklamyToolStripButton_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; SqlCommand command = new SqlCommand(); command.Connection = new SqlConnection(ConnString.getConnString().Value); command.CommandType = CommandType.StoredProcedure; // command.CommandText = "PROC_WYLICZ_I_ZAPISZ_PROWIZJE_DO_REKLAM"; command.CommandText = "PROC_WYLICZ_I_ZAPISZ_PROWIZJE"; command.Parameters.AddWithValue("@rok", this.rok); command.Parameters.AddWithValue("@ms", this.miesiac); command.Parameters.AddWithValue("@idAgencji", agencja); command.Connection.Open(); SqlTransaction transaction = command.Connection.BeginTransaction(); command.Transaction = transaction; try { command.ExecuteNonQuery(); transaction.Commit(); MessageBox.Show("Prowizja została naniesiona na zlecenia"); } catch (Exception ex) { MessageBox.Show(ex.GetType() + ex.Message); try { transaction.Rollback(); } catch (Exception ex2) { MessageBox.Show("ROLLBACK:" + ex2.GetType() + ex.Message); } } command.Connection.Close(); this.Cursor = Cursors.Default; MessageBox.Show("Prowizja naniesiona na zlecenia"); } /* private void przeliczStripButton_Click(object sender, EventArgs e) { if (pLANBindingSource.List.Count != 0) { foreach (DataRowView r in pLANBindingSource.List) { REKLAMADataSet.PLANRow row = (REKLAMADataSet.PLANRow)r.Row; przelicz(row); pLANBindingSource.EndEdit(); } } }*/ /* private void przelicz(REKLAMADataSet.PLANRow row) { row.ECP = 0; row.ESP = 0; row.ELK = 0; row.EP = 0; row.EPK = 0; row.EPR = 0; row.WH = 0; row.QO = 0; row.OCENA = 0; if (row.IsNull("BUDZET")) { row.BUDZET = 0; } if (row.IsNull("REKLAMY")) { row.REKLAMY = 0; } if (row.IsNull("W_REKLAMY")) { row.W_REKLAMY = 0; } if (row.IsNull("W_BUDZET")) { row.W_BUDZET = 0; } if (row.IsNull("N_KLIENCI")) { row.N_KLIENCI = 0; } if (row.IsNull("W_N_KLIENCI")) { row.W_N_KLIENCI = 0; } if (row.IsNull("W_SPOTKANIA")) { row.W_SPOTKANIA = 0; } if (row.IsNull("W_TEL")) { row.W_TEL = 0; } if (row.IsNull("W_EMAIL")) { row.W_EMAIL = 0; } if (row.IsNull("W_FAX")) { row.W_FAX = 0; } if (row.IsNull("W_LIST")) { row.W_LIST = 0; } if (row.IsNull("KONTAKTY")) { row.KONTAKTY = 0; } float W_BUDZET = Convert.ToSingle(row.W_BUDZET); float BUDZET = Convert.ToSingle(row.BUDZET); float W_REKLAMY = Convert.ToSingle(row.W_REKLAMY); float REKLAMY = Convert.ToSingle(row.REKLAMY); float W_N_KLIENCI = Convert.ToSingle(row.W_N_KLIENCI); float N_KLIENCI = Convert.ToSingle(row.N_KLIENCI); float W_SPOTKANIA = Convert.ToSingle(row.W_SPOTKANIA); float W_TEL = Convert.ToSingle(row.W_TEL); float W_EMAIL = Convert.ToSingle(row.W_EMAIL); float W_FAX = Convert.ToSingle(row.W_FAX); float W_LIST = Convert.ToSingle(row.W_LIST); float KONTAKTY = Convert.ToSingle(row.KONTAKTY); float JAKOSC_KORESPONDENCJI = Convert.ToSingle(row.JAKOSC_KORESPONDENCJI); float JAKOSC_OFERT = Convert.ToSingle(row.JAKOSC_OFERT); float JAKOSC_ROZMOWY_TEL = Convert.ToSingle(row.JAKOSC_ROZMOWY_TEL); float JAKOSC_SPOTKAN = Convert.ToSingle(row.JAKOSC_SPOTKAN); float WIEDZA_O_FIRMIE = Convert.ToSingle(row.WIEDZA_O_FIRMIE); float WIEDZA_O_PRODUKCIE = Convert.ToSingle(row.WIEDZA_O_PRODUKCIE); float WIEDZA_O_RYNKU = Convert.ToSingle(row.WIEDZA_O_RYNKU); float WIEDZA_OGOLNO_HANDLOWA = Convert.ToSingle(row.WIEDZA_OGOLNO_HANDLOWA); if (BUDZET != 0) { row.EP = 100 * W_BUDZET / BUDZET; } if (REKLAMY != 0) { row.ESP = 100 * W_REKLAMY / REKLAMY; } if ((REKLAMY != 0) && (W_REKLAMY != 0)) { row.EPR = 100 * (W_BUDZET/W_REKLAMY)/(BUDZET/REKLAMY); } if (N_KLIENCI != 0) { row.EPK = 100 * (W_N_KLIENCI/N_KLIENCI); } row.ECP = 100 * ((120 * W_SPOTKANIA + 5 * W_TEL + 30 * W_EMAIL + 30 * W_FAX + 30 * W_LIST) / (20 * 7 * 60)); if (KONTAKTY != 0) { row.ELK = 100 * ((W_SPOTKANIA + W_TEL + W_EMAIL + W_FAX + W_LIST) / KONTAKTY); } row.QO = 100 * (JAKOSC_KORESPONDENCJI / 10 + JAKOSC_OFERT / 10 + JAKOSC_ROZMOWY_TEL / 10 + JAKOSC_SPOTKAN / 10) / 4; row.WH = 100 * (WIEDZA_O_FIRMIE / 10 + WIEDZA_O_PRODUKCIE / 10 + WIEDZA_O_RYNKU / 10 + WIEDZA_OGOLNO_HANDLOWA / 10) / 4; row.OCENA = (float)Math.Round(((row.WH + row.QO + row.ELK + row.ECP + row.EPK + 1 * row.EPR + 1 * row.ESP + 1 * row.EP) / 8), 2); } */ private void dodajPlanToolStripButton_Click(object sender, EventArgs e) { OcenaAddForm oaf = new OcenaAddForm(); oaf.Show(); } private void usunToolStripButton_Click(object sender, EventArgs e) { if (pLANBindingSource.Current != null) { if (MessageBox.Show("Czy na pewno usunąć rekord?", "", MessageBoxButtons.YesNo) == DialogResult.Yes) { pLANBindingSource.RemoveCurrent(); pLANBindingSource.EndEdit(); pLANTableAdapter.Update(this.rEKLAMADataSet.PLAN); } } } private void zapiszDaneToolStripButton_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; if (Validate()) { pLANBindingSource.EndEdit(); pLANTableAdapter.Update(this.rEKLAMADataSet.PLAN); } this.Cursor = Cursors.Default; MessageBox.Show("Zmiany zapisane"); } private void ukryjKolumnyToolStripButton_Click(object sender, EventArgs e) { rOKDataGridViewTextBoxColumn.Visible = rOKDataGridViewTextBoxColumn.Visible ? false : true; mSDataGridViewTextBoxColumn.Visible = mSDataGridViewTextBoxColumn.Visible ? false : true; } private void prowizjeDataGridView_Leave(object sender, EventArgs e) { //ukrytyLabel.Select(); prowizjeDataGridView.EndEdit(); //pLANBindingSource.EndEdit(); REKLAMADataSet.PLANDataTable changes = rEKLAMADataSet.PLAN.GetChanges(DataRowState.Modified) as REKLAMADataSet.PLANDataTable; if (changes != null) { if (Validate()) { pLANBindingSource.EndEdit(); pLANTableAdapter.Update(this.rEKLAMADataSet.PLAN); } } } /// /// Podsumowuje budżet do wykonania /// private void uzupelnijBDsuma(){ int kasa=0; foreach (DataRowView r in pLANBindingSource.List) { kasa += Convert.ToInt32(r["BUDZET"]); } BDsumaTextBox.Text = String.Format("{0:C}", kasa); } /// /// Podsumowuje budżet wykonany /// private void uzupelnijBDWykonanySuma() { int kasa = 0; foreach (DataRowView r in pLANBindingSource.List) { kasa += Convert.ToInt32(r["W_BUDZET"]); } BDWykonanySumaTextBox.Text = String.Format("{0:C}", kasa); } /// /// Zamienia wpisaną liczbę do decimal /// private void prowizjeDataGridView_CellLeave(object sender, DataGridViewCellEventArgs e) { ukrytyLabel.Select(); prowizjeDataGridView.EndEdit(); pLANBindingSource.EndEdit(); if (prowizjeDataGridView.Columns[e.ColumnIndex].Name == "PR_PROWIZJI") { if (Convert.ToDecimal(prowizjeDataGridView[e.ColumnIndex,e.RowIndex].Value) >= 1) { prowizjeDataGridView[e.ColumnIndex, e.RowIndex].Value = Convert.ToDecimal(prowizjeDataGridView[e.ColumnIndex, e.RowIndex].Value) / 100; } } REKLAMADataSet.PLANDataTable changes = rEKLAMADataSet.PLAN.GetChanges( DataRowState.Modified) as REKLAMADataSet.PLANDataTable; if (changes != null) { pLANBindingSource.EndEdit(); pLANTableAdapter.Update(this.rEKLAMADataSet.PLAN); } } private void pLANBindingSource_ListChanged(object sender, ListChangedEventArgs e) { uzupelnijBDsuma(); uzupelnijBDWykonanySuma(); } private void szukajToolStripButton_Click(object sender, EventArgs e) { if (rokToolStripTextBox.Text != "") { short i; if (!Int16.TryParse(rokToolStripTextBox.Text, out i)) { MessageBox.Show("Podaj prawidłowy rok."); this.Cursor = Cursors.Default; return; } } else { MessageBox.Show("Podaj prawidłowy rok."); this.Cursor = Cursors.Default; return; } if (msToolStripTextBox.Text != "") { short i; if (!Int16.TryParse(msToolStripTextBox.Text, out i)) { MessageBox.Show("Podaj prawidłowy miesiąc."); this.Cursor = Cursors.Default; return; } } else { MessageBox.Show("Podaj prawidłowy miesiąc."); this.Cursor = Cursors.Default; return; } if (((ComboBox)agencjaToolStripComboBox.Control).SelectedValue == null) { MessageBox.Show("Wybierz agencję"); return; } this.rok = Convert.ToInt16(rokToolStripTextBox.Text); this.miesiac = Convert.ToInt16(msToolStripTextBox.Text); this.agencja = Convert.ToInt32(((ComboBox)agencjaToolStripComboBox.Control).SelectedValue); uprawnienia(); this.sLOWNIKDataSet.AGENCI.Clear(); this.rEKLAMADataSet.PLAN.Clear(); this.aGENCITableAdapter.FillByIdAgencji(this.sLOWNIKDataSet.AGENCI, this.agencja); this.pLANTableAdapter.FillByAgencja(this.rEKLAMADataSet.PLAN, this.rok, this.miesiac, this.agencja); } /* private void szukajToolStripButton_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; string query = "SELECT top 1000 [PLAN].* FROM AGENCJE INNER JOIN AGENCI ON AGENCJE.Id_agencji = AGENCI.ID_AGENCJI " + " INNER JOIN [PLAN] ON AGENCI.Symbol = [PLAN].SYMBOL WHERE 1 = 1 "; SqlCommand command = new SqlCommand(); command.CommandText = query; if (rokToolStripTextBox.Text != "") { short i; if (!Int16.TryParse(rokToolStripTextBox.Text, out i)) { MessageBox.Show("Podaj prawidłowy rok."); this.Cursor = Cursors.Default; return; } command.CommandText += " AND [PLAN].rok = @rok "; command.Parameters.AddWithValue("@rok", rokToolStripTextBox.Text); this.rok = Convert.ToInt16(rokToolStripTextBox.Text); } if (msToolStripTextBox.Text != "") { short i; if (!Int16.TryParse(msToolStripTextBox.Text, out i)) { MessageBox.Show("Podaj prawidłowy miesiąc."); this.Cursor = Cursors.Default; return; } command.CommandText += " AND [PLAN].ms = @ms "; command.Parameters.AddWithValue("ms", msToolStripTextBox.Text); this.miesiac = Convert.ToInt16(msToolStripTextBox.Text); } if (((ComboBox)agencjaToolStripComboBox.Control).SelectedValue == null) { MessageBox.Show("Wybierz agencję"); return; } else { command.CommandText += " AND AGENCJE.Id_Agencji=@agencja"; command.Parameters.AddWithValue("@agencja", ((ComboBox)agencjaToolStripComboBox.Control).SelectedValue); this.agencja = Convert.ToInt32(((ComboBox)agencjaToolStripComboBox.Control).SelectedValue); } // uprawnienia(); poblokujWiersze(); this.sLOWNIKDataSet.AGENCI.Clear(); this.aGENCITableAdapter.FillByIdAgencji(this.sLOWNIKDataSet.AGENCI, this.agencja); this.rEKLAMADataSet.PLAN.Clear(); // this.pLANTableAdapter.FillByAgencja(this.rEKLAMADataSet.PLAN, this.rok, this.miesiac, this.agencja); command.Connection = new SqlConnection(ConnString.getConnString().Value); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = command; adapter.Fill(rEKLAMADataSet.PLAN); this.Cursor = Cursors.Default; } private void poblokujWiersze() { if (User.getUser().St_kierownik) { prowizjeDataGridView.ReadOnly = false; foreach (DataGridViewRow r in prowizjeDataGridView.Rows) { if (!((Convert.ToInt32(r.Cells["rOKDataGridViewTextBoxColumn"].Value) > DateTime.Today.Year) | ((Convert.ToInt32(r.Cells["rOKDataGridViewTextBoxColumn"].Value) == DateTime.Today.Year) & (Convert.ToInt32(r.Cells["mSDataGridViewTextBoxColumn"].Value) >= DateTime.Today.Month - 1)) | ((Convert.ToInt32(r.Cells["rOKDataGridViewTextBoxColumn"].Value) == DateTime.Today.Year - 1) & (Convert.ToInt32(r.Cells["mSDataGridViewTextBoxColumn"].Value) == 12) & (DateTime.Today.Month == 1)))) { r.ReadOnly = true; } } } } */ private void uprawnienia() { if (User.getUser().St_kierownik) { if (!((this.rok > DateTime.Today.Year) | ((this.rok == DateTime.Today.Year) & (this.miesiac >= DateTime.Today.Month -1)) | ((this.rok == DateTime.Today.Year - 1) & (this.miesiac == 12) & (DateTime.Today.Month == 1)))) { OCENAComboCoxColumn.Visible = false; oCENADataGridViewTextBoxColumn.Visible = true; prowizjeDataGridView.ReadOnly = true; usunToolStripButton.Enabled = false; pobierzDaneToolStripButton.Enabled = false; naniesNaReklamyToolStripButton.Enabled = false; zapiszDaneToolStripButton.Enabled = false; zapiszToolStripButton.Enabled = false; } else { OCENAComboCoxColumn.Visible = true; oCENADataGridViewTextBoxColumn.Visible = false; prowizjeDataGridView.ReadOnly = false; usunToolStripButton.Enabled = true; pobierzDaneToolStripButton.Enabled = true; naniesNaReklamyToolStripButton.Enabled = true; zapiszDaneToolStripButton.Enabled = true; zapiszToolStripButton.Enabled = true; } } } private void prowizjeDataGridView_DataError_1(object sender, DataGridViewDataErrorEventArgs e) { MessageBox.Show("Wprowadź poprawne dane"); } private void ProvisionForm_Leave(object sender, EventArgs e) { prowizjeDataGridView.EndEdit(); //pLANBindingSource.EndEdit(); REKLAMADataSet.PLANDataTable changes = rEKLAMADataSet.PLAN.GetChanges(DataRowState.Modified) as REKLAMADataSet.PLANDataTable; if (changes != null) { if (Validate()) { pLANBindingSource.EndEdit(); pLANTableAdapter.Update(this.rEKLAMADataSet.PLAN); } } } private void printToolStripButton_Click(object sender, EventArgs e) { PrintDGV.Print_DataGridView(prowizjeDataGridView,50); } private void wyczyscToolStripButton_Click(object sender, EventArgs e) { } private void przeliczStripButton_Click(object sender, EventArgs e) { } } }