using ceTe.DynamicPDF; using ceTe.DynamicPDF.Merger; using ceTe.DynamicPDF.PageElements; using ceTe.DynamicPDF.Text; using PDFGenerator.BusinessLayer; using PDFGenerator.Presentation.Section.Tables; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Web.UI.WebControls; using NLog; namespace PDFGenerator.Presentation.Section { public class S186 : ISezione { private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); private string _testointroduttivo; ImportedPage page; /// /// Testo introduttivo della sezione. /// public string TestoIntroduttivo { get { return _testointroduttivo; } set { _testointroduttivo = value; } } public S186() { // // TODO: Add constructor logic here // } #region ISezione Members public void writeSezione(DataThread dataThread) { dataThread.SETDATA(); logger.Info("Inizio sezione S186 metodo writeSezione " + dataThread.CodiceFiscale); DocumentPDF document = dataThread.DocumentPDF; DataSet set = dataThread.Data.DatiSezione; DatiTabella datitab = new DatiTabella(); Tabella tab = new Tabella(); float ytabella = 0; // unico incremento per la y di tutte le tabelle. datitab.table = set.Tables["DettaglioPortafoglioSEI"]; #region Testo introduttivo Sezione S186 // Titolo della sezione logger.Info("Testo della sezione S186" + _testointroduttivo); if (dataThread.Rete == "W") _testointroduttivo = _testointroduttivo.Replace("$/Banca/$", "la Società"); else _testointroduttivo = _testointroduttivo.Replace("$/Banca/$", "la Banca"); document.setLastPos(-40); //document.setChapterHeader(dataThread.SezioneReport.TestoIntroduttivo, 0, 520, 8); document.setChapterHeader(_testointroduttivo, 0, 520, 8); #endregion #region Tabella dei Totali DataTable dtTotali = GetTotalis(set.Tables["DettaglioPortafoglioSEI"], dataThread); DatiTabella datitabPF = new DatiTabella(); datitabPF.table = dtTotali; DataTable dtTotaleDettaglio = GetTotalisDettaglio(set.Tables["DettaglioPortafoglioSEI"]); datitabPF.setY(document.getLastPos() + 10); datitabPF.setX(document.getMargineLeft()); if (dataThread.Rete == "W") { datitabPF.setCell(220, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true); datitabPF.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, false); } else { datitabPF.setCell(190, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true); //datitabPF.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true); datitabPF.setCell(130, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, false); } document.InsertTable(tab.getTabella(datitabPF)); #endregion #region Tabella di Dettaglio string label = "Dettaglio dei prodotti finanziari/servizi di investimento/conti correnti/depositi titoli esclusi dal Portafoglio Sei"; bool notaSezioneStampata = false; int m = (int)((float)label.Length / 135) + 2; FormattedTextArea text = new FormattedTextArea(label, document.getMargineLeft() - 5, document.getLastPos() + 70, 500, m, new FontFamily("pipp", Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaZ, Globals.OpenTypeFontVerdanaZ), 8, false); text.Height = text.GetRequiredHeight(); text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify; ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); page.Elements.Add(text); // Disegno la tabella Tabella tabellaDettaglio = new Tabella(document.getMargineLeft(), document.getLastPos() + 100); tabellaDettaglio.HeaderFont = 8; tabellaDettaglio.Header = true; tabellaDettaglio.Datasource = datitab.table; tabellaDettaglio.Id = "tabella_Dettaglio"; tabellaDettaglio.LineaFineTabella = true; tabellaDettaglio.SezioneDiProvenienza = "S186"; int righeDettaglio = datitab.table.Rows.Count; tabellaDettaglio.Colonne.Add(new Colonna("DataSottoscrizione", "Data sott.", 50, TipoAllineamento.SINISTRA, false, 7, false)); tabellaDettaglio.Colonne.Add(new Colonna("", " ", 1, TipoAllineamento.DESTRA, false, 7, false, TipoColonna.IMMAGINE)); tabellaDettaglio.Colonne.Add(new Colonna("ContrattoDossier", "Contratto/Dossier ", 120, TipoAllineamento.SINISTRA, false, 7, false, TipoColonna.IMMAGINE)); tabellaDettaglio.Colonne.Add(new Colonna("Descrizione", "Descrizione", 257, TipoAllineamento.SINISTRA, false, 7, false)); tabellaDettaglio.Colonne.Add(new Colonna("Controvalore", "Controvalore (€)*", 90, TipoAllineamento.DESTRA, false, 7, false)); tabellaDettaglio.DrawMonitoraggio(datitab, document, "", true, ref notaSezioneStampata); #endregion #region Tabella Totale Del Dettaglio datitab = new DatiTabella(); datitab.table = dtTotaleDettaglio; //if (tabellaDettaglio.SaltoPaginaEffettuato) // ytabella = tabellaDettaglio.AltezzaCella; ytabella += tabellaDettaglio.AltezzaTabella; // TABELLA DEI TOTALI. float yTabellaTotali; if (tabellaDettaglio.SaltoPaginaEffettuato) yTabellaTotali = document.getLastPos() + tabellaDettaglio.AltezzaTabella + tabellaDettaglio.AltezzaCella + 2; //tabellaDettaglio.AltezzaTabella; else { if (set.Tables["DettaglioPortafoglioSEI"].Rows.Count <= 17) yTabellaTotali = document.getLastPos() + 100 + tabellaDettaglio.AltezzaTabella + (tabellaDettaglio.AltezzaCella + tabellaDettaglio.DimensioneLinea); else yTabellaTotali = document.getLastPos() + ytabella + tabellaDettaglio.AltezzaCella; // ytabella + (tabellaDettaglio.AltezzaCella * set.Tables["DettaglioPortafoglioSEI"].Rows.Count); } //yTabellaTotali = ytabella + (tabellaDettaglio.AltezzaCella * set.Tables["DettaglioPortafoglioSEI"].Rows.Count); //if (tabellaDettaglio.SaltoPaginaEffettuato) // yTabellaTotali += 25; //Tabella tabTotali = new Tabella(document.getMargineLeft(), document.getLastPos() + yTabellaTotali + tabellaDettaglio.AltezzaCella); Tabella tabTotali = new Tabella(document.getMargineLeft(), yTabellaTotali); tabTotali.HeaderFont = 8; tabTotali.Header = false; tabTotali.SaltoPagina = false; tabTotali.Colonne.Add(new Colonna("Descrizione", string.Empty, 373, TipoAllineamento.SINISTRA, true, 8, true)); tabTotali.Colonne.Add(new Colonna("Valore", string.Empty, 145, TipoAllineamento.DESTRA, true, 8, true)); /// disegna la tabella dei totali. /////////////////////////////////////////////////// // Campione Simulazione Trimestrale Giugno 2024 PS 23/07/2024 /////////////////////////////////////////////////// /// INSERIMENTO NOTA : (**) Il controvalore esclude il saldo negativo dei conti correnti ( [valore negativo] € ) /// la inserisco come una label // SE ESISTE LA RIGA NEGATIVA ALLORA INSERISCO LA NOTA: //string notaValoreNegativo = ""; string notaTabella = ""; S148 temp = new S148(); float dim = document.getLastPos() + ytabella + tabTotali.AltezzaCella - 90; notaTabella = temp.addNota1(document, (int)dim, dataThread, 2, false); //notaValoreNegativo = "(**) Il controvalore esclude il saldo negativo dei conti correnti (" + ValNegativo.ToString("N2") + " € )"; //tabTotali.NotaTabella.Add(notaValoreNegativo) //writeSezione_NotaTabella(document, notaValoreNegativo,); tabTotali.Draw(datitab, document); //tabellaDettaglio.DrawMonitoraggio(datitab, document, "", true, ref notaSezioneStampata); #endregion #region Nota addNota(document, notaTabella); #endregion logger.Info("Fine sezione S186 metodo writeSezione " + dataThread.CodiceFiscale); } /// /// Restituisce il valore negativo se c'è (totali prodotti esclusivi) /// /// // Campione Simulazione Trimestrale Giugno 2024 PS 23/07/2024 private DataTable GetTotalis(DataTable _dt, DataThread dataThread) { List _listaTotali = new List(); // PatrimonioFideuram var itemPatrimonioFideuram = _dt.AsEnumerable().Select(s => s.Field("PatrimonioFideuram")).First(); //_listaTotali.Add(new Totali() //{ // Descrizione = "Patrimonio Fideuram (€)", // Valore = itemPatrimonioFideuram //}); _listaTotali.Add(new Totali() { Descrizione = dataThread.Rete == "F" ? "Patrimonio Fideuram (€)" : (dataThread.Rete == "S" ? "Patrimonio Sanpaolo Invest (€)" : "Patrimonio IW Private Investments (€)"), Valore = itemPatrimonioFideuram }); // Portafoglio SEI var itemPortafoglioSEI = _dt.AsEnumerable().Select(s => s.Field("PortafoglioSei")).First(); _listaTotali.Add(new Totali() { Descrizione = "Portafoglio Sei (€)", Valore = itemPortafoglioSEI }); ///////////////////////////////////////////////////////// // Campione Simulazione Trimestrale Giugno 2024 PS se cè un valore negativo inserire doppi asterischi PS 23/07/2024 { foreach (Totali Desc in _listaTotali) { Desc.Descrizione = Desc.Descrizione + " **"; } } ///////////////////////////////////////////////////////// // Converto la lista in DataTable DataTable _dtTotali = UtilityBusinessLayer.ToDataTable(_listaTotali); return _dtTotali; } private DataTable GetTotalisDettaglio(DataTable _dt) { List _listaTotalDettaglio = new List(); // PatrimonioFideuram var itemPatrimonioFideuram = _dt.AsEnumerable().Select(s => s.Field("SommaProdottiEsclusi")).First(); _listaTotalDettaglio.Add(new Totali() { // Campione Simulazione Trimestrale Giugno 2024 PS se cè un valore negativo inserire doppi asterischi PS 23/07/2024 Descrizione = "TOTALE PRODOTTI ESCLUSI DAL PORTAFOGLIO SEI **", Valore = itemPatrimonioFideuram }); // Converto la lista in DataTable DataTable _dtTotali = UtilityBusinessLayer.ToDataTable(_listaTotalDettaglio); _dtTotali.TableName = "TotaleDettaglio"; return _dtTotali; } private void addNota(DocumentPDF doc, string notaTabella = "") { FormatNum con = new FormatNum(); string nota = "(*) L’informazione relativa al Controvalore fa riferimento alla data di consolidamento(per i Conti Correnti al saldo contabile).Per alcuni prodotti la valorizzazione del Controvalore può risultare non perfettamente allineata alle rendicontazioni effettuate da SGR / Compagnie Assicurative, in seguito a differenti modalità di consolidamento dati."; if (notaTabella != null) { nota = nota + "
" + notaTabella; } doc.setNotaPieDiPagina(nota); } #endregion } public class Totali { public string Descrizione { get; set; } public string Valore { get; set; } } //public class TotaleDettaglio //{ // public string Descrizione { get; set; } // public string Valore { get; set; } //} }