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;
using Microsoft.Reporting.WinForms;
using System.Drawing.Printing;
using System.Drawing.Imaging;
using System.Reflection;
using System.IO;
namespace Baza_Reklam
{
public partial class FactureViewer : Form
{
private int idFaktury;
private int idKorekty;
private int idPoprzedniejKorekty;
///
/// true - faktura, false - proforma
///
bool rodzaj;
DataSet ds;
public FactureViewer(int idFakt,bool rodzaj, int old)
{
InitializeComponent();
idFaktury = idFakt;
this.rodzaj = rodzaj;
this.zapiszButton.Click += new EventHandler(zapiszButton_Click);
fakturaTableAdapter1.Connection.ConnectionString = ConnString.getConnString().Value;
fakturA_DETAILSTableAdapter1.Connection.ConnectionString = ConnString.getConnString().Value;
fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
proformaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
ds = new DataSet();
//zczytuje dane z pliku z tlumaczeniami
Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("Baza_Reklam.Raporty.faktura.xml");
ds.ReadXml(s);
fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFakt);
//ustawienie parametrów, nowych datasoure dla raportu
//ustawianie danych dla raportu
if (this.rodzaj)
{
typComboBox.Enabled = false;
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFakt)));
}
else {
jezykComboBox.Enabled = false;
reportViewer1.LocalReport.ReportEmbeddedResource = "Baza_Reklam.Raporty.proformaReversed.rdlc";
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", proformaTableAdapter.GetDataByIdFaktury(idFakt)));
}
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails", fakturA_DETAILSTableAdapter1.GetDataByIdFaktury(idFakt)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
List paramList = new List();
//Produkcja ma domyślnie bez podpisu
if (User.getUser().St_produkcja)
{
podpisCheckBox.CheckState = CheckState.Unchecked;
paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
this.reportViewer1.LocalReport.SetParameters(paramList);
}
//nadpisanie drukowania
//this.reportViewer1.Print += new CancelEventHandler(HandlePrint);
/*
if (rodzaj)
{
this.reportViewer1.Print += new CancelEventHandler(HandlePrint);
}
*/
jezykComboBox.SelectedIndex = 0;
typComboBox.SelectedIndex = 1;
}
/// true = proforma
public FactureViewer(int idFakt, bool r)
{
InitializeComponent();
reportViewer1.LocalReport.ReportEmbeddedResource = "Baza_Reklam.Raporty.fakturaReversed2.rdlc";
idFaktury = idFakt;
this.rodzaj = r;
this.zapiszButton.Click += zapiszButton2_Click;
fakturaTableAdapter1.Connection.ConnectionString = ConnString.getConnString().Value;
fAKTURA_DETAILS2TableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
proformaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
ds = new DataSet();
//zczytuje dane z pliku z tlumaczeniami
Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("Baza_Reklam.Raporty.faktura.xml");
ds.ReadXml(s);
fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFakt);
//ustawienie parametrów, nowych datasoure dla raportu
//ustawianie danych dla raportu
typComboBox.Enabled = false;
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFakt)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails2", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idFakt)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
List paramList = new List();
//Produkcja ma domyślnie bez podpisu
if (User.getUser().St_produkcja)
{
podpisCheckBox.CheckState = CheckState.Unchecked;
}
paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
if (this.rodzaj)
{
paramList.Add(new ReportParameter("proforma", "True", true));
}
else
{
paramList.Add(new ReportParameter("proforma", "False", true));
}
paramList.Add(new ReportParameter("zaplacono", zaplaconoCheckBox.Checked.ToString(), true));
this.reportViewer1.LocalReport.SetParameters(paramList);
jezykComboBox.SelectedIndex = 0;
typComboBox.SelectedIndex = 1;
}
///
/// Przy pierwszej korekcie idKorygowanejFaktury = idPoprzedniejKorekty
///
public FactureViewer(int idKorekty, int idKorygowanejFaktury, int idPoprzedniejKorekty)
{
InitializeComponent();
powodKorektyComboBox.Enabled = true;
opisTextBox.ReadOnly = !User.getUser().St_kierownik;
opisTextBox.BackColor = User.getUser().St_kierownik ? Color.White : Color.WhiteSmoke;
reportViewer1.LocalReport.ReportEmbeddedResource = "Baza_Reklam.Raporty.fakturaKorekta.rdlc";
this.idFaktury = idKorygowanejFaktury;
this.idKorekty = idKorekty;
this.idPoprzedniejKorekty = idPoprzedniejKorekty;
this.zapiszButton.Click += zapiszKorektaButton_Click;
fakturaTableAdapter1.Connection.ConnectionString = ConnString.getConnString().Value;
fAKTURA_DETAILS2TableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
proformaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
ds = new DataSet();
//zczytuje dane z pliku z tlumaczeniami
Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("Baza_Reklam.Raporty.faktura.xml");
ds.ReadXml(s);
fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idKorekty);
//ustawienie parametrów, nowych datasoure dla raportu
typComboBox.Enabled = false;
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Korekta",fakturaTableAdapter1.GetDataByIdFaktury(idKorekty)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFaktury)));
//piersza korekta
if (idPoprzedniejKorekty == idFaktury)
{
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails2", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idFaktury)));
}
else
{
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails2", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idPoprzedniejKorekty)));
}
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetailsKorekty", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idKorekty)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
List paramList = new List();
//Produkcja ma domyślnie bez podpisu
if (User.getUser().St_produkcja)
{
podpisCheckBox.CheckState = CheckState.Unchecked;
paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
this.reportViewer1.LocalReport.SetParameters(paramList);
}
jezykComboBox.SelectedIndex = 0;
typComboBox.SelectedIndex = 1;
}
/*
///
/// FAKTURA DLA POZNANIA
///
///
public FactureViewer(int idFakt)
{
InitializeComponent();
idFaktury = idFakt;
this.zapiszButton.Click += new EventHandler(zapiszPoznanButton_Click);
fakturaTableAdapter1.Connection.ConnectionString = ConnString.getConnString().Value;
fakturA_DETAILSTableAdapter1.Connection.ConnectionString = ConnString.getConnString().Value;
fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
proformaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
ds = new DataSet();
//zczytuje dane z pliku z tlumaczeniami
Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("Baza_Reklam.Raporty.faktura.xml");
ds.ReadXml(s);
fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFakt);
typComboBox.Enabled = false;
// wersjaComboBox.Enabled = false;
// jezykComboBox.Enabled = false;
reportViewer1.LocalReport.ReportEmbeddedResource = "Baza_Reklam.Raporty.fakturaPoznan.rdlc";
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFakt)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails", fakturA_DETAILSTableAdapter1.GetDataByIdFaktury(idFakt)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
jezykComboBox.SelectedIndex = 0;
typComboBox.SelectedIndex = 1;
// wersjaComboBox.SelectedIndex = 0;
}
*/
private void FactureViewer_Load(object sender, EventArgs e)
{
this.reportViewer1.RefreshReport();
this.reportViewer1.RefreshReport();
nUMERTextBox.Enabled = User.getUser().St_kierownik;
}
private void zapiszButton_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
//zapisanie zmian w polu "opis" faktury
fAKTURYBindingSource.EndEdit();
fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY);
fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFaktury);
reportViewer1.Reset();
reportViewer1.LocalReport.ReportEmbeddedResource = this.rodzaj ? "Baza_Reklam.Raporty.fakturaReversed.rdlc" : "Baza_Reklam.Raporty.proformaReversed.rdlc";
//ustawienie parametrów, nowych datasoure dla raportu
List paramList = new List();
if (this.rodzaj)
{
paramList.Add(new ReportParameter("jezyk", jezykComboBox.SelectedItem.ToString(), true));
paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
this.reportViewer1.LocalReport.SetParameters(paramList);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFaktury)));
}
else
{
paramList.Add(new ReportParameter("typ", typComboBox.SelectedItem.ToString(), true));
paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
this.reportViewer1.LocalReport.SetParameters(paramList);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", proformaTableAdapter.GetDataByIdFaktury(idFaktury)));
}
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails", fakturA_DETAILSTableAdapter1.GetDataByIdFaktury(idFaktury)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
reportViewer1.RefreshReport();
//MessageBox.Show(reportViewer1.LocalReport.ReportEmbeddedResource);
this.Cursor = Cursors.Default;
}
///
/// WERSJA DLA POZNANIA
///
private void zapiszPoznanButton_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
//zapisanie zmian w polu "opis" faktury
fAKTURYBindingSource.EndEdit();
fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY);
fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY,idKorekty);
//ustawienie parametrów, nowych datasoure dla raportu
List paramList = new List();
paramList.Add(new ReportParameter("jezyk", jezykComboBox.SelectedItem.ToString(), true));
paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
this.reportViewer1.LocalReport.SetParameters(paramList);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFaktury)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Korekta", fakturaTableAdapter1.GetDataByIdFaktury(idKorekty)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails", fakturA_DETAILSTableAdapter1.GetDataByIdFaktury(idFaktury)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
reportViewer1.RefreshReport();
//MessageBox.Show(reportViewer1.LocalReport.ReportEmbeddedResource);
this.Cursor = Cursors.Default;
}
private void zapiszKorektaButton_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
//zapisanie zmian w polu "opis" faktury
fAKTURYBindingSource.EndEdit();
fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY);
fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idKorekty);
reportViewer1.LocalReport.DataSources.Clear();
//ustawienie parametrów, nowych datasoure dla raportu
List paramList = new List();
paramList.Add(new ReportParameter("jezyk", jezykComboBox.SelectedItem.ToString(), true));
paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Korekta",fakturaTableAdapter1.GetDataByIdFaktury(idKorekty)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFaktury)));
//piersza korekta
if (idPoprzedniejKorekty == idFaktury)
{
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails2", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idFaktury)));
}
else
{
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails2", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idPoprzedniejKorekty)));
}
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetailsKorekty", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idKorekty)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
this.reportViewer1.LocalReport.SetParameters(paramList);
reportViewer1.RefreshReport();
//MessageBox.Show(reportViewer1.LocalReport.ReportEmbeddedResource);
this.Cursor = Cursors.Default;
}
private void zapiszButton2_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
//zapisanie zmian w polu "opis" faktury
fAKTURYBindingSource.EndEdit();
fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY);
fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFaktury);
//ustawienie parametrów, nowych datasoure dla raportu
List paramList = new List();
paramList.Add(new ReportParameter("jezyk", jezykComboBox.SelectedItem.ToString(), true));
paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
if (this.rodzaj)
{
paramList.Add(new ReportParameter("proforma", "True", true));
}
else
{
paramList.Add(new ReportParameter("proforma", "False", true));
}
paramList.Add(new ReportParameter("zaplacono", zaplaconoCheckBox.Checked.ToString(), true));
this.reportViewer1.LocalReport.SetParameters(paramList);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFaktury)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails2", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idFaktury)));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
reportViewer1.RefreshReport();
//MessageBox.Show(reportViewer1.LocalReport.ReportEmbeddedResource);
this.Cursor = Cursors.Default;
}
//drukowanie raportu serwerowego
/*
private int m_currentPageIndex;
private IList m_streams;
public void HandlePrint(object sender, CancelEventArgs e)
{
Run();
//MessageBox.Show("Drukowanie");
e.Cancel = true;
}
private void Print(PrinterSettings printerSettings)
{
MessageBox.Show("PrintBegin");
if (m_streams == null || m_streams.Count == 0)
return;
PrintDocument printDoc = new PrintDocument();
printDoc.PrinterSettings = printerSettings;
printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
MessageBox.Show("Print");
printDoc.Print();
}
private void Run()
{
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == DialogResult.OK)
{
MessageBox.Show("Export");
Export(reportViewer1.ServerReport);
m_currentPageIndex = 0;
MessageBox.Show("Print");
Print(printDialog.PrinterSettings);
}
}
private void PrintPage(object sender, PrintPageEventArgs ev)
{
MessageBox.Show("PrintPage1");
Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]);
pageImage.Save("C:\\testestPRO.emf");
// Note: Coordinate (0,0) does not coincide with the top left corner of
// the page; it coincides with the top left corner of the printable area
// of the page. To account for this we have to subtract the hard margin.
MessageBox.Show("PrintPage2nnn");
RectangleF adjustedRect = new RectangleF(
ev.PageBounds.Left - ev.PageSettings.HardMarginX,
ev.PageBounds.Top - ev.PageSettings.HardMarginY,
ev.PageBounds.Width, ev.PageBounds.Height);
MessageBox.Show(adjustedRect.Top.ToString() + "*" + adjustedRect.Height.ToString() + "*" + adjustedRect.Width.ToString());
ev.Graphics.DrawImage(pageImage, adjustedRect);
MessageBox.Show("PrintPage4");
m_currentPageIndex++;
ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
MessageBox.Show("PrintPage5");
}
private void Export(ServerReport report)
{
MessageBox.Show("ExportBegin");
string deviceInfo =
"" +
" EMF" +
" 21cm" +
" 29cm" +
" 1cm" +
" 1cm" +
" 1cm" +
" 1cm" +
"";
m_streams = new List();
string mimeType;
string extension;
System.Collections.Specialized.NameValueCollection urlAccessParameters = new System.Collections.Specialized.NameValueCollection();
urlAccessParameters.Add("rs:PersistStreams", "True");
Stream reportStream = report.Render("Image", deviceInfo, urlAccessParameters, out mimeType, out extension);
m_streams.Add(reportStream);
urlAccessParameters.Remove("rs:PersistStreams");
urlAccessParameters.Add("rs:GetNextStream", "True");
while (reportStream.Length != 0)
{
reportStream =
report.Render("Image", deviceInfo, urlAccessParameters, out mimeType, out extension);
m_streams.Add(reportStream);
}
m_streams.RemoveAt(m_streams.Count - 1);
foreach (Stream stream in m_streams)
stream.Position = 0;
MessageBox.Show("ExportEnd");
}
*/
// drukowanie raportu lokalnego
private int m_currentPageIndex;
private IList m_streams;
private Stream CreateStream(string name,
string fileNameExtension, Encoding encoding,
string mimeType, bool willSeek)
{
Stream stream = new FileStream(name +
"." + fileNameExtension, FileMode.Create);
m_streams.Add(stream);
return stream;
}
private void Export(LocalReport report)
{
string deviceInfo =
"" +
" EMF" +
" 19cm" +
" 25cm" +
" 1cm" +
" 1cm" +
" 1cm" +
" 0cm" +
"";
Warning[] warnings;
m_streams = new List();
report.Render("Image", deviceInfo, CreateStream,
out warnings);
foreach (Stream stream in m_streams)
stream.Position = 0;
}
private void PrintPage(object sender, PrintPageEventArgs ev)
{
Metafile pageImage = new
Metafile(m_streams[m_currentPageIndex]);
ev.Graphics.DrawImage(pageImage, ev.PageBounds);
m_currentPageIndex++;
ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
}
private void Print(PrinterSettings printerSettings)
{
if (m_streams == null || m_streams.Count == 0)
return;
PrintDocument printDoc = new PrintDocument();
printDoc.PrinterSettings = printerSettings;
printDoc.PrinterSettings.Duplex = Duplex.Vertical;
printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
printDoc.Print();
}
private void Run()
{
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == DialogResult.OK)
{
Export(reportViewer1.LocalReport);
m_currentPageIndex = 0;
Print(printDialog.PrinterSettings);
Dispose();
}
}
public void Dispose()
{
if (m_streams != null)
{
foreach (Stream stream in m_streams)
stream.Close();
m_streams = null;
}
}
public void HandlePrint(object sender, CancelEventArgs e)
{
Run();
e.Cancel = true;
}
private void powodKorektyComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
DataRowView row = (DataRowView)fAKTURYBindingSource.Current;
row["opis"] = powodKorektyComboBox.SelectedItem.ToString();
fAKTURYBindingSource.EndEdit();
opisTextBox.Text = powodKorektyComboBox.SelectedItem.ToString();
}
}
}