using System; using System.Data; using ceTe.DynamicPDF.Text; using PDFGenerator.BusinessLayer.DataSection; using PDFGenerator.Presentation.Section.Tables; using PDFGenerator.BusinessLayer; namespace PDFGenerator.Presentation.Section { public class S171 : ISezione { string Titolo = " "; private decimal totalePatNonCoperto = 0; bool hasColumnCtvNonCoperto; bool hasColumnCtvNonCopertoTotali; private string _testointroduttivo; private TipoReport _tipologiaReport; /// /// Modalità di visualizzazione: /// La modalità normale mostra la colonna Intermediario(S76 in modalità normale), /// La modalità alternativa mostra la colonna AreaProgetto(S76 in modalità alternativa). /// Se non specificato di default viene impostata la modalità normale. /// public enum EmodalitaRappresentazione { normale, alternativa } private EmodalitaRappresentazione _modalitaRappresentazione = EmodalitaRappresentazione.normale; /// /// Modalità di visualizzazione: /// La modalità normale mostra la colonna Intermediario(S76 in modalità normale), /// La modalità alternativa mostra la colonna AreaProgetto(S76 in modalità alternativa). /// Se non specificato di default viene impostata la modalità normale. /// public EmodalitaRappresentazione modalitaRappresentazione { get { return _modalitaRappresentazione; } set { _modalitaRappresentazione = value; } } public TipoReport TipologiaReport { get { return _tipologiaReport; } set { _tipologiaReport = value; } } /// /// Imposta o recupere il testo introduttivo della sezione. /// public string TestoIntroduttivo { get { return _testointroduttivo; } set { _testointroduttivo = value; } } /// /// Costruttore /// public S171() { } /// /// Costruttore /// /// public S171(EmodalitaRappresentazione modalitavisualizzazione) { _modalitaRappresentazione = modalitavisualizzazione; } #region ISezione Members public void writeSezione(DataThread dataThread) { DocumentPDF document = dataThread.DocumentPDF; DatiTabella datitab = new DatiTabella(); DataSetS76 set = (DataSetS76)dataThread.Data.DatiSezione; int fontTab = 7; int fontTabTotale = 8; #region Verifica presenza prodotti parzialmente DataTable datiTotaleConto = set.Tables["TotaleConti"]; totalePatNonCoperto = 0; #region Gestione Colonna controvalore non coperto if (datiTotaleConto.ExtendedProperties.Contains("HasColumnCtvNonCoperto")) hasColumnCtvNonCopertoTotali = Convert.ToBoolean(datiTotaleConto.ExtendedProperties["HasColumnCtvNonCoperto"]); #endregion // verifico anche se va inserito il controvalore non coperto if (datiTotaleConto.Rows.Count > 0 && datiTotaleConto.Rows[0]["ValoreNonCoperto"] != DBNull.Value && hasColumnCtvNonCopertoTotali) totalePatNonCoperto = (decimal)datiTotaleConto.Rows[0]["ValoreNonCoperto"]; #endregion datitab.table = set.Tables["ContoCorrente"]; #region Gestione Colonna controvalore non coperto if (datitab.table.ExtendedProperties.Contains("HasColumnCtvNonCoperto")) hasColumnCtvNonCoperto = Convert.ToBoolean(datitab.table.ExtendedProperties["HasColumnCtvNonCoperto"]); #endregion DataView view = new DataView(datitab.table); view.RowFilter = ""; //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. if (document.checkMargin(datitab.GetRowDim() * 3)) document.addPage(); if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") { document.setSezTitoloDiagnosi(Titolo); document.setChapterHeader(_testointroduttivo); } else { document.setSezTitolo(Titolo); document.setChapterHeader(_testointroduttivo, 0, 520, 8); } Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos()); tab.HeaderFont = 8; tab.Header = true; datitab.table = view.ToTable(); tab.Datasource = datitab.table; //if (dataThread.TipoReport.ToUpper() == "MONITORAGGIO") // { // tab.AltezzaCella = 30; // tab.HeaderFont = 9; // fontTab = 9; // fontTabTotale = 9; // } if (Convert.ToBoolean((datitab.table.Columns["AreaProgetto"].ExtendedProperties["ToRemove"]))) { // LA COLONNA AreaProgetto NON VIENE VISUALIZZATA tab.Colonne.Add(new Colonna("DataSottoscrizione", "Data sott.", hasColumnCtvNonCoperto ? 66 : 80, TipoAllineamento.SINISTRA, false, fontTab, false)); tab.Colonne.Add(new Colonna("Contratto", "Contratto/
Dossier", hasColumnCtvNonCoperto ? 66 : 80, TipoAllineamento.SINISTRA, false, fontTab, false)); tab.Colonne.Add(new Colonna("Descrizione", "Descrizione", hasColumnCtvNonCoperto ? 197 : 267, TipoAllineamento.SINISTRA, false, fontTab, false)); tab.Colonne.Add(new Colonna("", " ", 5, TipoAllineamento.SINISTRA, false, 7, false)); tab.Colonne.Add(new Colonna("Controvalore", "Controvalore €", hasColumnCtvNonCoperto ? 90 : 80, TipoAllineamento.DESTRA, false, fontTab, false)); if (hasColumnCtvNonCoperto) tab.Colonne.Add(new Colonna("ControvaloreNonCoperto", "Controvalore
non coperto €", 90, TipoAllineamento.DESTRA, false, fontTab, false)); } else { // LA COLONNA AreaProgetto VIENE VISUALIZZATA //V DataSottoscrizione portata a 60 da 66 per portare a quasi 90 areaProgetto come è sulla S88, se occorre si poterbbe rosicchiare qualcosa dalla colonna contratto tab.Colonne.Add(new Colonna("DataSottoscrizione", "Data sott.", hasColumnCtvNonCoperto ? 60 : 80, TipoAllineamento.SINISTRA, false, fontTab, false)); tab.Colonne.Add(new Colonna("Contratto", "Contratto/
Dossier", hasColumnCtvNonCoperto ? 66 : 80, TipoAllineamento.SINISTRA, false, fontTab, false)); tab.Colonne.Add(new Colonna("Descrizione", "Descrizione", hasColumnCtvNonCoperto ? 115 : 181, TipoAllineamento.SINISTRA, false, fontTab, false)); tab.Colonne.Add(new Colonna("", " ", 5, TipoAllineamento.SINISTRA, false, fontTab, false)); switch (_modalitaRappresentazione) { case EmodalitaRappresentazione.normale: tab.Colonne.Add(new Colonna("Intermediario", "Intermediario", 86, TipoAllineamento.SINISTRA, false, fontTab, false)); break; case EmodalitaRappresentazione.alternativa: tab.Colonne.Add(new Colonna("AreaProgetto", "Area/
Progetto", 86, TipoAllineamento.SINISTRA, false, fontTab, false)); break; } tab.Colonne.Add(new Colonna("Controvalore", "Controvalore €", hasColumnCtvNonCoperto ? 90 : 80, TipoAllineamento.DESTRA, false, fontTab, false)); if (hasColumnCtvNonCoperto) tab.Colonne.Add(new Colonna("ControvaloreNonCoperto", "Controvalore
non coperto €", 90, TipoAllineamento.DESTRA, false, fontTab, false)); } tab.Draw(datitab,document); //TOTALI datitab = new DatiTabella(); datitab.table = set.Tables["TotaleConti"]; Tabella tabellaTotali = new Tabella(document.getMargineLeft(),document.getLastPos() + tab.AltezzaTabella + 25); tabellaTotali.HeaderFont = 8; tabellaTotali.Header = false; tabellaTotali.SaltoPagina = false; tabellaTotali.Datasource=datitab.table; // footer if (hasColumnCtvNonCoperto) { tabellaTotali.Colonne.Add(new Colonna("Descrizione", "", 332, TipoAllineamento.SINISTRA, true, fontTabTotale, true)); tabellaTotali.Colonne.Add(new Colonna("Valore", "", 90, TipoAllineamento.DESTRA, true, fontTabTotale, true)); tabellaTotali.Colonne.Add(new Colonna("ValoreNonCoperto", "", 90, TipoAllineamento.DESTRA, true, fontTabTotale, true)); } else { if (datitab.table.Columns.Contains("ValoreNonCoperto")) datitab.table.Columns.Remove("ValoreNonCoperto"); tabellaTotali.Colonne.Add(new Colonna("Descrizione", "", 420, TipoAllineamento.SINISTRA, true, fontTabTotale, true)); tabellaTotali.Colonne.Add(new Colonna("Valore", "", 92, TipoAllineamento.DESTRA, true, fontTabTotale, true)); } tabellaTotali.Draw(datitab,document); //tab.AddNotaPartiteViaggianti(tabellaTotali.AltezzaTabella + tab.AltezzaTabella, document); ///// setto la posizione aggiornata document.setLastPos(tabellaTotali.AltezzaTabella + tab.AltezzaTabella + 5); } public void setTitolo(string label) { Titolo = label; } #endregion } }