Skip to content

Instantly share code, notes, and snippets.

@riccardopirani
Created January 31, 2020 13:28
Show Gist options
  • Select an option

  • Save riccardopirani/3becbf714fdafae931b9feecd47b12d9 to your computer and use it in GitHub Desktop.

Select an option

Save riccardopirani/3becbf714fdafae931b9feecd47b12d9 to your computer and use it in GitHub Desktop.
Code Crash Report C# RDLC
private void StampaPreventivoCompleto_Load(object sender, EventArgs e)
{
lock (LockMonitor)
{
if (ModalitaCalcoloUtile == "Unica percetuale")
{
try
{
Preventivi p = new Preventivi(int.Parse(IdPreventivo));
string Query = "SELECT (select Firma from Utente where IdUtente='" + u.IdUtente + "') as Firma,(select FilialeCliente.Citta from Preventivo inner join FilialeCliente on FilialeCliente.IdFilialeCliente=Preventivo.IdFiliale where IdPreventivo='" + IdPreventivo + "') as Filiale,Preventivo.VostroRiferimento,Preventivo.Oggetto,Preventivo.PrezzoRiservato,Preventivo.IdPreventivo,Azienda.Logo as LogoAzienda,convert(VARCHAR(10),Preventivo.DataInserimento,105) as DataInserimento,Preventivo.RiferimentoInterno,Preventivo.Testata,Preventivo.Chiusura,Cliente.Titolo,Cliente.RagioneSociale,Cliente.Indirizzo,Cliente.Cap,Cliente.Citta,Cliente.Provincia FROM Preventivo inner join Cliente on Cliente.IdCliente = Preventivo.IdCliente inner join Utente on Preventivo.UtenteCreazione = Utente.Username inner join Azienda on Azienda.IdAzienda=Utente.IdAzienda where Preventivo.IdPreventivo='" + IdPreventivo + "' ";
string Query2 = "DECLARE @T AS table( Descrizione varchar(5000), NumeroCapitolo varchar(100), SottoCapitolo1 varchar(5000), SottoCapitolo2 varchar(5000), SottoCapitolo3 varchar(5000), Totale money, DescrizioneEstesa varchar(5000), Images Image, CostoUnitario money, Quantita money, DescrizioneDis varchar(5000),Tipologia varchar(300),PrezzoRiservato money,UM varchar(50)); INSERT INTO @T SELECT Capitolo.Descrizione, Capitolo.NumeroCapitolo,SottoCapitolo.SottoCapitolo1,SottoCapitolo.SottoCapitolo2,SottoCapitolo.SottoCapitolo3, (ROUND(((((ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * PercentualeUtile) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2)) / 100) * PercentualeMargine) + (ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * PercentualeUtile) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2))), 2)) * SottoCapitolo.Quantita as Totale ,SottoCapitolo.DescrizioneEstesa, SottoCapitolo.Images, ROUND(((((ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * PercentualeUtile) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2)) / 100) * PercentualeMargine) + (ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * PercentualeUtile) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2))), 2) as CostoUnitario,SottoCapitolo.Quantita , CASE when Tipologia='Prezzo' then SottoCapitolo.Descrizione else ''+SottoCapitolo.Codice+ ' ' +SottoCapitolo.Descrizione end as DescrizioneDis,Capitolo.Tipologia,Capitolo.PrezzoRiservato,SottoCapitolo.UnitaMisura as UM FROM Capitolo INNER JOIN SottoCapitolo ON SottoCapitolo.IdCapitolo = Capitolo.IdCapitolo INNER JOIN Preventivo ON Preventivo.IdPreventivo = Capitolo.IdPreventivo where Preventivo.IdPreventivo = '" + IdPreventivo + "'; SELECT CASE WHEN ROW_NUMBER() OVER(PARTITION BY a.Descrizione ORDER BY a.Descrizione) = 1 THEN a.Descrizione ELSE '' END AS Descrizione, Descrizione as Desc2,a.NumeroCapitolo, a.SottoCapitolo1, a.SottoCapitolo2, a.SottoCapitolo3, a.DescrizioneDis, a.CostoUnitario, a.Quantita, a.Totale AS TotaleCap, a.DescrizioneEstesa, a.Images,a.Tipologia,a.PrezzoRiservato,a.UM FROM(SELECT 1 AS d, ROW_NUMBER() OVER(PARTITION BY Descrizione ORDER BY Descrizione) AS r, Descrizione, NumeroCapitolo, SottoCapitolo1, SottoCapitolo2, SottoCapitolo3, Totale, DescrizioneDis, Images, CostoUnitario, Quantita, DescrizioneEstesa,Tipologia,PrezzoRiservato,UM FROM @T UNION ALL SELECT 2, 0, Descrizione, NumeroCapitolo, '', '', '', SUM(Totale), '', '', '', '','',Tipologia,PrezzoRiservato,'' FROM @T GROUP BY Descrizione,Tipologia,PrezzoRiservato,NumeroCapitolo) AS a ORDER BY a.Descrizione, a.d";
string Query3 = "select SUM((SottoCapitolo.Quantita * FLOOR((CostoUnitario + ((CostoUnitario / 100) * (Preventivo.PercentualeUtile)) + ((CostoUnitario / 100) * (Preventivo.PercentualeMargine)) +((CostoUnitario / 100) * (Preventivo.PercentualeSpeseGenerali)))))) AS Totale from Preventivo inner join Capitolo on Capitolo.IdPreventivo = Preventivo.IdPreventivo inner join SottoCapitolo on SottoCapitolo.IdCapitolo = Capitolo.IdCapitolo where Preventivo.IdPreventivo='" + IdPreventivo + "'";
string Query4 = "select Descrizione from Capitolo where IdPreventivo = '" + IdPreventivo + "'";
SqlConnection conn = Database.Apriconnessione();
DataStampaPreventivoCompleto d = new DataStampaPreventivoCompleto();
SqlDataAdapter da = new SqlDataAdapter(Query, conn);
SqlDataAdapter da2 = new SqlDataAdapter(Query2, conn);
SqlDataAdapter da3 = new SqlDataAdapter(Query3, conn);
SqlDataAdapter da4 = new SqlDataAdapter(Query4, conn);
da.Fill(d, d.Tables[0].TableName);
da2.Fill(d, d.Tables[1].TableName);
da3.Fill(d, d.Tables[2].TableName);
da4.Fill(d, d.Tables[3].TableName);
ReportDataSource rds = new ReportDataSource("DataSet1", d.Tables[0]);
ReportDataSource rds2 = new ReportDataSource("DataSet2", d.Tables[1]);
ReportDataSource rds3 = new ReportDataSource("DataSet3", d.Tables[2]);
ReportDataSource rds4 = new ReportDataSource("DataSet4", d.Tables[3]);
ReportParameterCollection reportParameters = new ReportParameterCollection { new ReportParameter("TotalePreventivo", "" + p.CalcoloTotalePreventivo(Margine, Utile, SpeseGenerali)) };
//this.reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
reportViewer1.LocalReport.SetParameters(new ReportParameter("SenzaPrezzo", "" + isSenzaPrezzo));
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(rds);
reportViewer1.LocalReport.DataSources.Add(rds2);
reportViewer1.LocalReport.DataSources.Add(rds3);
reportViewer1.LocalReport.DataSources.Add(rds4);
reportViewer1.LocalReport.SetParameters(reportParameters);
reportViewer1.SetDisplayMode(DisplayMode.PrintLayout);
reportViewer1.Refresh();
conn.Close();
}
catch (Exception ex)
{
Managementerror.SendError("Errore Stampa Preventivo Completo Unica Percentuale: " + ex);
MessageBox.Show("Errore nella stampa");
}
}
//Stampa con percentuale su ogni singolo capitolo
else
{
try
{
Preventivi p = new Preventivi(int.Parse(IdPreventivo));
string Query = "SELECT (select Firma from Utente where IdUtente='" + u.IdUtente + "') as Firma,(select FilialeCliente.Citta from Preventivo inner join FilialeCliente on FilialeCliente.IdFilialeCliente=Preventivo.IdFiliale where IdPreventivo='" + IdPreventivo + "') as Filiale,Preventivo.VostroRiferimento,Preventivo.Oggetto,Preventivo.IdPreventivo,Azienda.Logo as LogoAzienda,convert(VARCHAR(10),Preventivo.DataInserimento,105) as DataInserimento,Preventivo.RiferimentoInterno,Preventivo.Testata,Preventivo.PrezzoRiservato,Preventivo.Chiusura,Cliente.Titolo,Cliente.RagioneSociale,Cliente.Indirizzo,Cliente.Cap,Cliente.Citta,Cliente.Provincia FROM Preventivo inner join Cliente on Cliente.IdCliente = Preventivo.IdCliente inner join Utente on Preventivo.UtenteCreazione = Utente.Username inner join Azienda on Azienda.IdAzienda=Utente.IdAzienda where Preventivo.IdPreventivo='" + IdPreventivo + "' ";
string Query2 = "DECLARE @T AS table( Descrizione varchar(5000), NumeroCapitolo varchar(100), SottoCapitolo1 varchar(5000), SottoCapitolo2 varchar(5000), SottoCapitolo3 varchar(5000), Totale money, DescrizioneEstesa varchar(5000), Images Image, CostoUnitario money, Quantita money, DescrizioneDis varchar(5000),Tipologia varchar(300),PrezzoRiservato money,UM varchar(50)); INSERT INTO @T SELECT Capitolo.Descrizione, Capitolo.NumeroCapitolo,SottoCapitolo.SottoCapitolo1,SottoCapitolo.SottoCapitolo2,SottoCapitolo.SottoCapitolo3, (ROUND(((((ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * Capitolo.Ricarico) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2)) / 100) * PercentualeMargine) + (ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * Capitolo.Ricarico) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2))), 2)) * SottoCapitolo.Quantita as Totale ,SottoCapitolo.DescrizioneEstesa, SottoCapitolo.Images, ROUND(((((ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * Capitolo.Ricarico) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2)) / 100) * PercentualeMargine) + (ROUND((((((((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario) / 100) * Capitolo.Ricarico) + (((SottoCapitolo.CostoUnitario / 100) * PercentualeSpeseGenerali) + SottoCapitolo.CostoUnitario)) * 1), 2))), 2) as CostoUnitario,SottoCapitolo.Quantita , CASE when Tipologia='Prezzo' then SottoCapitolo.Descrizione else ''+SottoCapitolo.Codice+ ' ' +SottoCapitolo.Descrizione end as DescrizioneDis,Capitolo.Tipologia,Capitolo.PrezzoRiservato,SottoCapitolo.UnitaMisura as UM FROM Capitolo INNER JOIN SottoCapitolo ON SottoCapitolo.IdCapitolo = Capitolo.IdCapitolo INNER JOIN Preventivo ON Preventivo.IdPreventivo = Capitolo.IdPreventivo where Preventivo.IdPreventivo = '" + IdPreventivo + "'; SELECT CASE WHEN ROW_NUMBER() OVER(PARTITION BY a.Descrizione ORDER BY a.Descrizione) = 1 THEN a.Descrizione ELSE '' END AS Descrizione, Descrizione as Desc2,a.NumeroCapitolo, a.SottoCapitolo1, a.SottoCapitolo2, a.SottoCapitolo3, a.DescrizioneDis, a.CostoUnitario, a.Quantita, a.Totale AS TotaleCap, a.DescrizioneEstesa, a.Images,a.Tipologia,a.PrezzoRiservato,a.UM FROM(SELECT 1 AS d, ROW_NUMBER() OVER(PARTITION BY Descrizione ORDER BY Descrizione) AS r, Descrizione, NumeroCapitolo, SottoCapitolo1, SottoCapitolo2, SottoCapitolo3, Totale, DescrizioneDis, Images, CostoUnitario, Quantita, DescrizioneEstesa,Tipologia,PrezzoRiservato,UM FROM @T UNION ALL SELECT 2, 0, Descrizione, NumeroCapitolo, '', '', '', SUM(Totale), '', '','','', '', Tipologia, PrezzoRiservato,'' FROM @T GROUP BY Descrizione,PrezzoRiservato,Tipologia,NumeroCapitolo) AS a ORDER BY a.Descrizione, a.d";
string Query3 = "select SUM((SottoCapitolo.Quantita * FLOOR((CostoUnitario + ((CostoUnitario / 100) * (Capitolo.Ricarico)) + ((CostoUnitario / 100) * (Preventivo.PercentualeMargine)) +((CostoUnitario / 100) * (Preventivo.PercentualeSpeseGenerali)))))) AS Totale from Preventivo inner join Capitolo on Capitolo.IdPreventivo = Preventivo.IdPreventivo inner join SottoCapitolo on SottoCapitolo.IdCapitolo = Capitolo.IdCapitolo where Preventivo.IdPreventivo='" + IdPreventivo + "'";
string Query4 = "select Descrizione from Capitolo where IdPreventivo = '" + IdPreventivo + "'";
SqlConnection conn = Database.Apriconnessione();
DataStampaPreventivoCompleto d = new DataStampaPreventivoCompleto();
SqlDataAdapter da = new SqlDataAdapter(Query, conn);
SqlDataAdapter da2 = new SqlDataAdapter(Query2, conn);
SqlDataAdapter da3 = new SqlDataAdapter(Query3, conn);
SqlDataAdapter da4 = new SqlDataAdapter(Query4, conn);
da.Fill(d, d.Tables[0].TableName);
da2.Fill(d, d.Tables[1].TableName);
da3.Fill(d, d.Tables[2].TableName);
da4.Fill(d, d.Tables[3].TableName);
ReportDataSource rds = new ReportDataSource("DataSet1", d.Tables[0]);
ReportDataSource rds2 = new ReportDataSource("DataSet2", d.Tables[1]);
ReportDataSource rds3 = new ReportDataSource("DataSet3", d.Tables[2]);
ReportDataSource rds4 = new ReportDataSource("DataSet4", d.Tables[3]);
ReportParameterCollection reportParameters = new ReportParameterCollection { new ReportParameter("TotalePreventivo", "" + p.CalcolaTotalePreventivo_PercenutaleSuOgniSingoloCapitolo(Margine, SpeseGenerali)) };
//this.reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
reportViewer1.LocalReport.SetParameters(new ReportParameter("SenzaPrezzo", "" + isSenzaPrezzo)); reportViewer1.LocalReport.EnableExternalImages = true;
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(rds);
reportViewer1.LocalReport.DataSources.Add(rds2);
reportViewer1.LocalReport.DataSources.Add(rds3);
reportViewer1.LocalReport.DataSources.Add(rds4);
reportViewer1.LocalReport.SetParameters(reportParameters);
reportViewer1.LocalReport.Refresh();
reportViewer1.RefreshReport();
reportViewer1.SetDisplayMode(DisplayMode.PrintLayout);
conn.Close();
}
catch (Exception ex)
{
Managementerror.SendError("Errore Stampa Preventivo Completo Percentuale su Ogni singolo capitolo: " + ex);
MessageBox.Show("Errore nella stampa");
}
}
//Genero il file pdf partendo da reportViewer e lo salvo all'interno del db
byte[] file = Support.GenerazioneFilePDF(reportViewer1);
//Se il file è stato generato correttamente lo salvo all'interno del db
if (file != null)
{
Preventivi p = new Preventivi(Convert.ToInt32(IdPreventivo));
p.SalvataggioStampa(u, file, "Stampa Preventivo Completo con Modalità calcolo utile: " + ModalitaCalcoloUtile + " e % Margine: " + Margine + " % SpeseGenerali: " + SpeseGenerali + " % Utile: " + Utile);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment