using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using ceTe.DynamicPDF.Text; using ceTe.DynamicPDF; using PDFGenerator.Presentation.Section; using PDFGenerator; using PDFGenerator.Presentation.Section.Tables; using PDFGenerator.Presentation.Section.Charts; using PDFGenerator.BusinessLayer; using PDFGenerator.BusinessLayer.DataSection; using ceTe.DynamicPDF.PageElements; using ContrattoSei.Utilities; /// /// Summary description for S80ALT /// /// public class S80ALT : ISezione { string Titolo = string.Empty; string _testotitolo; string _testointroduttivo; /// /// Testo introduttivo della sezione. /// public string TestoIntroduttivo { get { return _testointroduttivo; } set { _testointroduttivo = value; } } /// /// Testo del titolo della sezione. /// public string TestoTitolo { get { return _testotitolo; } set { _testotitolo = value; } } public void setTitolo(string label) { Titolo = label; } public S80ALT() { // // TODO: Add constructor logic here // } public void writeSezione(DataThread dataThread) { DocumentPDF document = dataThread.DocumentPDF; DatiTabella datitab; DataSetS80ALT set = (DataSetS80ALT)dataThread.Data.DatiSezione; //setta la datatable che contiene i dati per disegnare la tabella Dati datitab = new DatiTabella(); datitab.table = set.Tables["GraficoPiramide"]; string captionFase1 = datitab.table.Columns["Fase1"].Caption; string captionFase2 = datitab.table.Columns["Fase2"].Caption; string captionFase3 = datitab.table.Columns["Fase3"].Caption; // Aggiungo una pagina se la tabella non entra nella corrente. if (document.checkMargin(130)) document.addPage(); //document.setSezTitolo(Titolo); document.setLastPos(-40); document.setChapterHeader(_testointroduttivo, 0, 520, 8); #region Definizione delle Vars DataRow rowTemplate; //float TotalePatrimonio; float Ypos = 0; float totaleTabellaAlttez = 0; int larghezzaColonnaDescrizione = 0; //è variabile e da calcolare in base allo spazio disponibile int larghezzaColonnaFase1 = 130; int larghezzaColonnaFase2 = 150; int larghezzaColonnaFase3 = 130; int larghezzaUltimaColonna = 0; #endregion #region Piramide //disegno la parte della piramide Piramide modello = new Piramide(); modello.writeSezione(document); Ypos = document.getLastPos(); #endregion #region Disegno Tabella Fase 1,2,3 int nFasi = 0; datitab = new DatiTabella(); datitab.table = set.Tables["GraficoPiramide"]; rowTemplate = datitab.table.Rows[0]; Tabella TabellaAreaBisogno = new Tabella(); TabellaAreaBisogno.LineeTabella = false; TabellaAreaBisogno.Y = Ypos; TabellaAreaBisogno.X = document.getMargineLeft(); TabellaAreaBisogno.Header = true; TabellaAreaBisogno.HeaderFont = 8; TabellaAreaBisogno.SaltoPagina = false; TabellaAreaBisogno.Datasource = datitab.table; TabellaAreaBisogno.AltezzaCella = 30; larghezzaColonnaDescrizione = 512; // Definizione delle colonne foreach (DataColumn column in TabellaAreaBisogno.Datasource.Columns) { if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase1; larghezzaUltimaColonna = larghezzaColonnaFase1; TabellaAreaBisogno.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1, TipoAllineamento.DESTRA, false, 8, false)); // -25 è la larghezza della colonna che conterrà l'immagine nFasi++; } if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase2; larghezzaUltimaColonna = larghezzaColonnaFase2; TabellaAreaBisogno.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2, TipoAllineamento.DESTRA, false, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine nFasi++; } if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase3; larghezzaUltimaColonna = larghezzaColonnaFase3; TabellaAreaBisogno.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3, TipoAllineamento.DESTRA, false, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine nFasi++; } } TabellaAreaBisogno.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, false, 8, false)); TabellaAreaBisogno.Draw(datitab, document); Ypos += TabellaAreaBisogno.AltezzaTabella; totaleTabellaAlttez += TabellaAreaBisogno.AltezzaTabella; #endregion #region Disegno Tabella Totale Risorse Allocate Ypos += 40; rowTemplate = set.Tables["RisorseNonAllocate"].Rows[0]; if ((rowTemplate["fase1"].ToString() != "0,00" && rowTemplate["fase1"].ToString() != string.Empty) || (rowTemplate["fase2"].ToString() != "0,00" && rowTemplate["fase2"].ToString() != string.Empty) || (rowTemplate["fase3"].ToString() != "0,00" && rowTemplate["fase3"].ToString() != string.Empty)) { datitab = new DatiTabella(); datitab.table = set.Tables["RisorseAllocate"]; rowTemplate = datitab.table.Rows[0]; Tabella tabellaTotale = new Tabella(); tabellaTotale.X = document.getMargineLeft(); tabellaTotale.Y = Ypos; tabellaTotale.Header = false; tabellaTotale.SaltoPagina = false; tabellaTotale.Datasource = datitab.table; larghezzaColonnaDescrizione = 512; // Definizione delle colonne foreach (DataColumn column in tabellaTotale.Datasource.Columns) { if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase1; tabellaTotale.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1, TipoAllineamento.DESTRA, false, 8, true)); } if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase2; tabellaTotale.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2, TipoAllineamento.DESTRA, false, 8, true)); } if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase3; tabellaTotale.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3, TipoAllineamento.DESTRA, false, 8, true)); } } tabellaTotale.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, false, 8, true)); tabellaTotale.Draw(datitab, document); Ypos += tabellaTotale.AltezzaTabella; totaleTabellaAlttez += tabellaTotale.AltezzaTabella; } #endregion #region Disegno Tabella Risorse non allocate rowTemplate = set.Tables["RisorseNonAllocate"].Rows[0]; if ((rowTemplate["fase1"].ToString() != "0,00" && rowTemplate["fase1"].ToString() != string.Empty) || (rowTemplate["fase2"].ToString() != "0,00" && rowTemplate["fase2"].ToString() != string.Empty) || (rowTemplate["fase3"].ToString() != "0,00" && rowTemplate["fase3"].ToString() != string.Empty)) { //setta la datatable che contiene i Dati per disegnare la tabella del Risorse non allocate datitab = new DatiTabella(); datitab.table = set.Tables["RisorseNonAllocate"]; rowTemplate = datitab.table.Rows[0]; Tabella tabellaRisorseNonAllocate = new Tabella(); tabellaRisorseNonAllocate.X = document.getMargineLeft(); tabellaRisorseNonAllocate.Y = Ypos; tabellaRisorseNonAllocate.Header = false; tabellaRisorseNonAllocate.SaltoPagina = false; tabellaRisorseNonAllocate.Datasource = datitab.table; larghezzaColonnaDescrizione = 512; // Definizione delle colonne foreach (DataColumn column in tabellaRisorseNonAllocate.Datasource.Columns) { if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase1; tabellaRisorseNonAllocate.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1, TipoAllineamento.DESTRA, false, 8, false)); } if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase2; tabellaRisorseNonAllocate.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2, TipoAllineamento.DESTRA, false, 8, false)); } if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase3; tabellaRisorseNonAllocate.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3, TipoAllineamento.DESTRA, false, 8, false)); } } tabellaRisorseNonAllocate.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, false, 8, false)); tabellaRisorseNonAllocate.Draw(datitab, document); Ypos += tabellaRisorseNonAllocate.AltezzaTabella; totaleTabellaAlttez += tabellaRisorseNonAllocate.AltezzaTabella; } #endregion #region Disegno TOTALE RISORSE FINANZIARIE DataRow rowTemplateCC = set.Tables["ContoCorrente"].Rows[0]; DataRow rowTemplateSelf = set.Tables["LineaSelfNeg"].Rows[0]; DataRow rowTemplateOC = set.Tables["OperazioniInCorso"].Rows[0]; if ( ((rowTemplateCC["fase1"].ToString() != "-" && rowTemplateCC["fase1"].ToString() != string.Empty) || (rowTemplateCC["fase2"].ToString() != "-" && rowTemplateCC["fase2"].ToString() != string.Empty) || (rowTemplateCC["fase3"].ToString() != "-" && rowTemplateCC["fase3"].ToString() != string.Empty)) || ((rowTemplateOC["fase1"].ToString() != "0,00" && rowTemplateOC["fase1"].ToString() != string.Empty) || (rowTemplateOC["fase2"].ToString() != "0,00" && rowTemplateOC["fase2"].ToString() != string.Empty) || (rowTemplateOC["fase3"].ToString() != "0,00" && rowTemplateOC["fase3"].ToString() != string.Empty)) || ((rowTemplateSelf["fase1"].ToString() != "-" && rowTemplateSelf["fase1"].ToString() != string.Empty) || (rowTemplateSelf["fase2"].ToString() != "-" && rowTemplateSelf["fase2"].ToString() != string.Empty) || (rowTemplateSelf["fase3"].ToString() != "-" && rowTemplateSelf["fase3"].ToString() != string.Empty)) ) { //setta la datatable che contiene i Dati per disegnare la tabella del Risorse non allocate datitab = new DatiTabella(); datitab.table = set.Tables["RisorseFinanziarie"]; rowTemplate = datitab.table.Rows[0]; Tabella tabellaRisorseFinanziarie = new Tabella(); tabellaRisorseFinanziarie.X = document.getMargineLeft(); tabellaRisorseFinanziarie.Y = Ypos; tabellaRisorseFinanziarie.Header = false; tabellaRisorseFinanziarie.SaltoPagina = false; tabellaRisorseFinanziarie.Datasource = datitab.table; larghezzaColonnaDescrizione = 512; // Definizione delle colonne foreach (DataColumn column in tabellaRisorseFinanziarie.Datasource.Columns) { if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase1; tabellaRisorseFinanziarie.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1, TipoAllineamento.DESTRA, false, 8, true)); } if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase2; tabellaRisorseFinanziarie.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2, TipoAllineamento.DESTRA, false, 8, true)); } if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase3; tabellaRisorseFinanziarie.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3, TipoAllineamento.DESTRA, false, 8, true)); } } tabellaRisorseFinanziarie.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, false, 8, true)); tabellaRisorseFinanziarie.Draw(datitab, document); Ypos += tabellaRisorseFinanziarie.AltezzaTabella; totaleTabellaAlttez += tabellaRisorseFinanziarie.AltezzaTabella; } #endregion #region Disegno CONTO CORRENTE A SALDO NEGATIVO rowTemplate = set.Tables["ContoCorrente"].Rows[0]; if ((rowTemplate["fase1"].ToString() != "-" && rowTemplate["fase1"].ToString() != string.Empty) || (rowTemplate["fase2"].ToString() != "-" && rowTemplate["fase2"].ToString() != string.Empty) || (rowTemplate["fase3"].ToString() != "-" && rowTemplate["fase3"].ToString() != string.Empty)) { //setta la datatable che contiene i Dati per disegnare la tabella del Risorse non allocate datitab = new DatiTabella(); datitab.table = set.Tables["ContoCorrente"]; rowTemplate = datitab.table.Rows[0]; Tabella tabellaContoCorrente = new Tabella(); tabellaContoCorrente.X = document.getMargineLeft(); tabellaContoCorrente.Y = Ypos; tabellaContoCorrente.Header = false; tabellaContoCorrente.SaltoPagina = false; tabellaContoCorrente.Datasource = datitab.table; larghezzaColonnaDescrizione = 512; // Definizione delle colonne foreach (DataColumn column in tabellaContoCorrente.Datasource.Columns) { if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase1; tabellaContoCorrente.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1, TipoAllineamento.DESTRA, false, 8, false)); } if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase2; tabellaContoCorrente.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2, TipoAllineamento.DESTRA, false, 8, false)); } if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase3; tabellaContoCorrente.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3, TipoAllineamento.DESTRA, false, 8, false)); } } tabellaContoCorrente.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, false, 8, false)); tabellaContoCorrente.Draw(datitab, document); Ypos += tabellaContoCorrente.AltezzaTabella; totaleTabellaAlttez += tabellaContoCorrente.AltezzaTabella; } #endregion #region Disegno Linea Self Negativa rowTemplate = set.Tables["LineaSelfNeg"].Rows[0]; if ((rowTemplate["fase1"].ToString() != "-" && rowTemplate["fase1"].ToString() != string.Empty) || (rowTemplate["fase2"].ToString() != "-" && rowTemplate["fase2"].ToString() != string.Empty) || (rowTemplate["fase3"].ToString() != "-" && rowTemplate["fase3"].ToString() != string.Empty)) { //setta la datatable che contiene i Dati per disegnare la tabella del Risorse non allocate datitab = new DatiTabella(); datitab.table = set.Tables["LineaSelfNeg"]; rowTemplate = datitab.table.Rows[0]; Tabella tabellaLineaSelfNeg = new Tabella(); tabellaLineaSelfNeg.X = document.getMargineLeft(); tabellaLineaSelfNeg.Y = Ypos; tabellaLineaSelfNeg.Header = false; tabellaLineaSelfNeg.SaltoPagina = false; tabellaLineaSelfNeg.Datasource = datitab.table; //tabellaOperazioniInCorso.AltezzaCella = 30; larghezzaColonnaDescrizione = 512; // Definizione delle colonne foreach (DataColumn column in tabellaLineaSelfNeg.Datasource.Columns) { if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase1; tabellaLineaSelfNeg.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1, TipoAllineamento.DESTRA, false, 8, false)); } if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase2; tabellaLineaSelfNeg.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2, TipoAllineamento.DESTRA, false, 8, false)); } if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase3; tabellaLineaSelfNeg.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3, TipoAllineamento.DESTRA, false, 8, false)); } } tabellaLineaSelfNeg.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, false, 8, false)); tabellaLineaSelfNeg.Draw(datitab, document); Ypos += tabellaLineaSelfNeg.AltezzaTabella; totaleTabellaAlttez += tabellaLineaSelfNeg.AltezzaTabella; } #endregion #region Disegno Operazioni in corso rowTemplate = set.Tables["OperazioniInCorso"].Rows[0]; if ((rowTemplate["fase1"].ToString() != "0,00" && rowTemplate["fase1"].ToString() != string.Empty) || (rowTemplate["fase2"].ToString() != "0,00" && rowTemplate["fase2"].ToString() != string.Empty) || (rowTemplate["fase3"].ToString() != "0,00" && rowTemplate["fase3"].ToString() != string.Empty)) { //setta la datatable che contiene i Dati per disegnare la tabella del Risorse non allocate datitab = new DatiTabella(); datitab.table = set.Tables["OperazioniInCorso"]; rowTemplate = datitab.table.Rows[0]; Tabella tabellaOperazioniInCorso = new Tabella(); tabellaOperazioniInCorso.X = document.getMargineLeft(); tabellaOperazioniInCorso.Y = Ypos; tabellaOperazioniInCorso.Header = false; tabellaOperazioniInCorso.SaltoPagina = false; tabellaOperazioniInCorso.Datasource = datitab.table; //tabellaOperazioniInCorso.AltezzaCella = 30; larghezzaColonnaDescrizione = 512; // Definizione delle colonne foreach (DataColumn column in tabellaOperazioniInCorso.Datasource.Columns) { if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase1; tabellaOperazioniInCorso.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1, TipoAllineamento.DESTRA, false, 8, false)); } if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase2; tabellaOperazioniInCorso.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2, TipoAllineamento.DESTRA, false, 8, false)); } if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase3; tabellaOperazioniInCorso.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3, TipoAllineamento.DESTRA, false, 8, false)); } } tabellaOperazioniInCorso.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, false, 8, false)); tabellaOperazioniInCorso.Draw(datitab, document); Ypos += tabellaOperazioniInCorso.AltezzaTabella; totaleTabellaAlttez += tabellaOperazioniInCorso.AltezzaTabella; } #endregion #region Disegno Totale Patrimonto //setta la datatable che contiene i Dati per disegnare la tabella del Risorse non allocate datitab = new DatiTabella(); datitab.table = set.Tables["DatiTotale"]; rowTemplate = set.Tables["DatiTotale"].Rows[0]; Tabella tabellaDatiTotale = new Tabella(); tabellaDatiTotale.X = document.getMargineLeft(); tabellaDatiTotale.Y = Ypos; tabellaDatiTotale.Header = false; tabellaDatiTotale.SaltoPagina = false; tabellaDatiTotale.Datasource = datitab.table; larghezzaColonnaDescrizione = 512; // Definizione delle colonne foreach (DataColumn column in tabellaDatiTotale.Datasource.Columns) { if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase1; tabellaDatiTotale.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1, TipoAllineamento.DESTRA, true, 8, true)); } if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase2; tabellaDatiTotale.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2, TipoAllineamento.DESTRA, true, 8, true)); } if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty) { larghezzaColonnaDescrizione -= larghezzaColonnaFase3; tabellaDatiTotale.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3, TipoAllineamento.DESTRA, true, 8, true)); } } tabellaDatiTotale.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, true, 8, true)); tabellaDatiTotale.Draw(datitab, document); Ypos += tabellaDatiTotale.AltezzaTabella; totaleTabellaAlttez += tabellaDatiTotale.AltezzaTabella; #endregion #region Disegno Dettaglio Movimenti Dopo Dati Totale //La minima larghezza necessaria per la descrizione di questa nuova tabella è 159, quindi: //512 - 73 - 150 - 130 = 159. int dettaglioMovimentiLarghezzaColonnaDescrizione = 512; int dettaglioMovimentiLarghezzaColonnaFase1 = 73; int dettaglioMovimentiLarghezzaColonnaFase2 = 150; int dettaglioMovimentiLarghezzaColonnaFase3 = 130; int numeroFasiVisibili = 0; bool presenzaFase3 = false; int incrementoPixelRettangoloFase3 = 0; //Ypos -= 5; //setta la datatable che contiene i Dati per stampare righe ulteriori sotto al totale. datitab = new DatiTabella(); datitab.table = set.Tables["RigheDopoDatiTotale"]; rowTemplate = set.Tables["RigheDopoDatiTotale"].Rows[0]; Tabella tabellaRigheDopoDatiTotale = new Tabella(); tabellaRigheDopoDatiTotale.X = document.getMargineLeft(); tabellaRigheDopoDatiTotale.Y = Ypos; tabellaRigheDopoDatiTotale.Header = false; tabellaRigheDopoDatiTotale.SaltoPagina = false; tabellaRigheDopoDatiTotale.Datasource = datitab.table; foreach (DataColumn column in tabellaRigheDopoDatiTotale.Datasource.Columns) { if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty) { dettaglioMovimentiLarghezzaColonnaDescrizione -= dettaglioMovimentiLarghezzaColonnaFase1; if (rowTemplate["fase1"].ToString().Equals("notvisible")) { tabellaRigheDopoDatiTotale.Colonne.Add(new Colonna("Fase1BlankValue", string.Empty, dettaglioMovimentiLarghezzaColonnaFase1, TipoAllineamento.DESTRA, false, 8, false)); } else { ++numeroFasiVisibili; tabellaRigheDopoDatiTotale.Colonne.Add(new Colonna(column.ColumnName, column.Caption, dettaglioMovimentiLarghezzaColonnaFase1, TipoAllineamento.DESTRA, false, 8, false)); } } if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty) { dettaglioMovimentiLarghezzaColonnaDescrizione -= dettaglioMovimentiLarghezzaColonnaFase2; if (rowTemplate["fase2"].ToString().Equals("notvisible")) { tabellaRigheDopoDatiTotale.Colonne.Add(new Colonna("Fase2BlankValue", string.Empty, dettaglioMovimentiLarghezzaColonnaFase2, TipoAllineamento.DESTRA, false, 8, false)); } else { ++numeroFasiVisibili; //if (rowTemplate["fase2"].ToString() != "n.d.") //{ tabellaRigheDopoDatiTotale.Colonne.Add(new Colonna(column.ColumnName, column.Caption, dettaglioMovimentiLarghezzaColonnaFase2, TipoAllineamento.DESTRA, false, 8, false)); //} //else //{ // tabellaRigheDopoDatiTotale.Colonne.Add(new Colonna(column.ColumnName, // column.Caption, // dettaglioMovimentiLarghezzaColonnaFase2 - 50, // TipoAllineamento.SINISTRA, true, 8, false)); //} } } if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty) { dettaglioMovimentiLarghezzaColonnaDescrizione -= dettaglioMovimentiLarghezzaColonnaFase3; if (rowTemplate["fase3"].ToString().Equals("notvisible")) { tabellaRigheDopoDatiTotale.Colonne.Add(new Colonna("Fase3BlankValue", string.Empty, dettaglioMovimentiLarghezzaColonnaFase3, TipoAllineamento.DESTRA, false, 8, false)); } else { ++numeroFasiVisibili; tabellaRigheDopoDatiTotale.Colonne.Add(new Colonna(column.ColumnName, column.Caption, dettaglioMovimentiLarghezzaColonnaFase3, TipoAllineamento.DESTRA, false, 8, false)); presenzaFase3 = true; } } } if (numeroFasiVisibili > 0) { tabellaRigheDopoDatiTotale.Colonne.Insert(0, new Colonna("Descrizione", "", dettaglioMovimentiLarghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, false, 8, false)); if (presenzaFase3) incrementoPixelRettangoloFase3 += 14; } tabellaRigheDopoDatiTotale.Draw(datitab, document); Ypos += tabellaRigheDopoDatiTotale.AltezzaTabella; totaleTabellaAlttez += tabellaRigheDopoDatiTotale.AltezzaTabella; #endregion #region Disegno riquadro su Situazione Corrente e freccia //float totaleTabellaAltteza = TabellaAreaBisogno.AltezzaTabella + tabellaTotale.AltezzaCella + tabellaContoCorrente.AltezzaCella + tabellaOperazioniInCorso.AltezzaCella + tabellaRisorseNonAllocate.AltezzaCella + tabellaRisorseFinanziarie.AltezzaCella + tabellaDatiTotale.AltezzaTabella + 10; // riquadro intorno la colonna Situazione Corrente float xRiquadro = 528 - larghezzaUltimaColonna + (larghezzaUltimaColonna / 2); ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); Rectangle rettangoloSuSituazioneCorrente; //rettangoloSuSituazioneCorrente = new Rectangle(xRiquadro, TabellaAreaBisogno.Y - 10, larghezzaUltimaColonna - 35, totaleTabellaAlttez - 13 + incrementoPixelRettangoloFase3); rettangoloSuSituazioneCorrente = new Rectangle(xRiquadro, TabellaAreaBisogno.Y - 10, larghezzaUltimaColonna - 35, totaleTabellaAlttez - 7 + incrementoPixelRettangoloFase3); rettangoloSuSituazioneCorrente.CornerRadius = 5; page.Elements.Add(rettangoloSuSituazioneCorrente); System.Reflection.Assembly thisExe; thisExe = System.Reflection.Assembly.GetExecutingAssembly(); System.IO.Stream file = thisExe.GetManifestResourceStream(UtilityManager.getAppSetting("FrecciaS80")); switch (nFasi) { case 2: // Una freccia tra "attivazione monitoraggio" e "situazione corrente" o tra "Precedente invio report" e "situazione corrente" page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, document.getMargineLeft() + 395, TabellaAreaBisogno.Y - 10, 0.57F)); break; case 3: // Una freccia tra "attivazione monitoraggio" e "precedente invio report" e tra "precedente invio report" e "situazione corrente" page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, document.getMargineLeft() + 245, TabellaAreaBisogno.Y - 10, 0.57F)); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, document.getMargineLeft() + 395, TabellaAreaBisogno.Y - 10, 0.57F)); break; default: break; } #endregion #region Disegno Didascalie Note Dettaglio Movimenti Ypos -= 13; DataTable dtRighe = set.Tables["RigheDopoDatiTotale"]; DataTable dtDidascalieDB = set.Tables["DettaglioMovimentiDidascalieNote"]; int fase1NumeroAsterischi = 0; int fase2NumeroAsterischi = 0; int fase3NumeroAsterischi = 0; if (!string.IsNullOrEmpty(dtRighe.Rows[0]["Fase1NumeroAsterischiNota"].ToString())) fase1NumeroAsterischi = Convert.ToInt16(dtRighe.Rows[0]["Fase1NumeroAsterischiNota"]); if (!string.IsNullOrEmpty(dtRighe.Rows[0]["Fase2NumeroAsterischiNota"].ToString())) fase2NumeroAsterischi = Convert.ToInt16(dtRighe.Rows[0]["Fase2NumeroAsterischiNota"]); if (!string.IsNullOrEmpty(dtRighe.Rows[0]["Fase3NumeroAsterischiNota"].ToString())) fase3NumeroAsterischi = Convert.ToInt16(dtRighe.Rows[0]["Fase3NumeroAsterischiNota"]); DataTable dtDidascalieInUso = new DataTable(); dtDidascalieInUso.Columns.Add(new DataColumn("SequenzaAsterischi", typeof(string))); dtDidascalieInUso.Columns.Add(new DataColumn("Descrizione", typeof(string))); DataRow dr; DataRow[] righeDidascalia; string accodamento = string.Empty; // lele if (fase1NumeroAsterischi > 0) { righeDidascalia = dtDidascalieDB.Select(string.Format(" NumeroAsterischi = {0}", fase1NumeroAsterischi)); if (righeDidascalia.Length > 0) { dr = dtDidascalieInUso.NewRow(); accodamento = "("; for (int i = 0; i < fase1NumeroAsterischi; i++) { accodamento = string.Format("{0}{1}", accodamento, "*"); } accodamento = string.Format("{0})", accodamento); dr["SequenzaAsterischi"] = accodamento; dr["Descrizione"] = righeDidascalia[0]["Descrizione"].ToString(); dtDidascalieInUso.Rows.Add(dr); } } if (fase2NumeroAsterischi > 0) { righeDidascalia = dtDidascalieDB.Select(string.Format(" NumeroAsterischi = {0}", fase2NumeroAsterischi)); if (righeDidascalia.Length > 0) { dr = dtDidascalieInUso.NewRow(); accodamento = "("; for (int i = 0; i < fase2NumeroAsterischi; i++) { accodamento = string.Format("{0}{1}", accodamento, "*"); } accodamento = string.Format("{0})", accodamento); if (fase3NumeroAsterischi == 0) { dr["SequenzaAsterischi"] = accodamento; dr["Descrizione"] = righeDidascalia[0]["Descrizione"].ToString(); } dtDidascalieInUso.Rows.Add(dr); } } if (fase3NumeroAsterischi > 0) { righeDidascalia = dtDidascalieDB.Select(string.Format(" NumeroAsterischi = {0}", fase3NumeroAsterischi)); if (righeDidascalia.Length > 0) { dr = dtDidascalieInUso.NewRow(); accodamento = "("; for (int i = 0; i < fase3NumeroAsterischi; i++) { accodamento = string.Format("{0}{1}", accodamento, "*"); } accodamento = string.Format("{0})", accodamento); dr["SequenzaAsterischi"] = accodamento + " " + righeDidascalia[0]["Descrizione"].ToString(); //remmare questa se non si vuole far uscire didascalia note? dr["Descrizione"] = righeDidascalia[0]["Descrizione"].ToString(); dtDidascalieInUso.Rows.Add(dr); } } datitab = new DatiTabella(); datitab.table = dtDidascalieInUso; Tabella tabellaDidascalieNote = new Tabella(); tabellaDidascalieNote.X = document.getMargineLeft(); tabellaDidascalieNote.Y = Ypos; tabellaDidascalieNote.Header = false; tabellaDidascalieNote.SaltoPagina = false; tabellaDidascalieNote.DimensioneLinea = 0; tabellaDidascalieNote.AltezzaCella = 10; tabellaDidascalieNote.DisegnaHeaderAlCambioPagina = false; tabellaDidascalieNote.Datasource = datitab.table; //ATTENZIONE: //A causa del tipo Tabella, per la colonna "SequenzaAsterischi" (con dimensione del testo pari ad 8) //un valore di larghezza inferiore a 25 renderà imposibile visualizzare correttamente le sequenze di asterischi //che verranno visualizzate correttamente solo nel caso siano (*), (**), (***). //512 è il valore della larghezza standard delle tabelle usate in questo documento pdf. tabellaDidascalieNote.Colonne.Add(new Colonna("SequenzaAsterischi", string.Empty, 512, TipoAllineamento.SINISTRA, false, 6, false)); /* tabellaDidascalieNote.Colonne.Add(new Colonna("Descrizione", string.Empty, 512 - 12, TipoAllineamento.SINISTRA, false, 6, false));*/ tabellaDidascalieNote.Draw(datitab, document); Ypos += tabellaDidascalieNote.AltezzaTabella; totaleTabellaAlttez += tabellaDidascalieNote.AltezzaTabella; #endregion document.setLastPos(totaleTabellaAlttez); } }