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