2025-06-03 15:11:16 +02:00

798 lines
39 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Text;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.BusinessLayer;
using ceTe.DynamicPDF.PageElements;
using System.Collections.Generic;
using System.Linq;
using NLog;
namespace PDFGenerator.Presentation.Section
{
class S180 : ISezione
{
NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
private string _header = "";
public string Header
{
get { return _header; }
set { _header = value; }
}
private TipologiaReport _tipologiaReport;
public TipologiaReport TipologiaReport
{
get { return _tipologiaReport; }
set { _tipologiaReport = value; }
}
private string _testoIntroduttivo = string.Empty;
public string TestoIntroduttivo
{
get { return _testoIntroduttivo; }
set { _testoIntroduttivo = value; }
}
private string _testoChiusura = string.Empty;
public string TestoChiusura
{
get { return _testoChiusura; }
set { _testoChiusura = value; }
}
public S180()
{
//
// TODO: Add constructor logic here
//
}
#region ISezione Members
#region ATTENZIONE NON PIU VALIDA
public void writeSezione(DataThread dataThread)
{
DocumentPDF document = dataThread.DocumentPDF;
DataSetS180 set = (DataSetS180)dataThread.Data.DatiSezione;
//20180820 CR Professionali: la tabella non va visualizzata per i clienti professionali
if (!dataThread.IsProfessionalClient)
{
if (set.Tables["ProdottiAltaComplessita"].Rows.Count > 0)
{
//20180913 Commentato blocco (eventualmente, si dovrebbe mettere come ramo ELSE nel prossimo blocco if
//20180817 Se non c'è spazio nella pagina corrente
//if (!document.checkMargin(400))
//{
// document.changePage();
// document.nextPage(document.getMargineLeft());
// //document.addPage();
//}
//--20180817
//--20180913
// 20181219 Fix bug di spaginazione della tabella complessità alta, in caso venga stampata a cavallo di due pagine
if (!document.LastSectionCheckIn.Equals("S179")) // Se non si è passati per la S179
{
document.changePage();
document.nextPage(document.getMargineLeft());
}
else
{
if (document.getLastPos() >= 500)
{
document.changePage();
document.nextPage(document.getMargineLeft());
}
}
//MIFID2 20180522 DA MODIFICARE INTRODUCENDO UNA NUOVA PROPRIETA' in DocumentPDF (LastSectionPrinted) sulla quale si fa il controllo se è stata stampata o meno...
//if (document.getLastPos() > 700)
//if (!document.LastSectionCheckIn.Equals("S179")) // Se non si è passati per la S179
//{
// document.changePage();
// document.nextPage(document.getMargineLeft());
//}
//--MIFID2
//--20181219
document.LastSectionCheckIn = "S180";
ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
document.setSezTitoloDiagnosi(dataThread.SezioneReport.Titolo);
string nota1 = dataThread.SezioneReport.Nota;
string nota2 = dataThread.SezioneReport.NotaAlternativa;
string tempTesto = dataThread.SezioneReport.TestoIntroduttivo;
document.setChapterHeader(tempTesto.Replace("$/Banca/$", dataThread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest"), 0, 520, 8);
document.setHeaderSpace(5);
DatiTabella datitab = new DatiTabella();
#region Tabella Dettaglio Prodotti
Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos());
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tab.HeaderFont = 8;
tab.Header = true;
tab.LineaFineTabella = false;
tab.Datasource = datitab.table;
datitab.table = set.Tables["ProdottiAltaComplessita"];
datitab.setY(document.getLastPos());
//datitab.setIsLinee(1);
tab.Colonne.Add(new Colonna("CodiceContratto", "Codice Contratto", 120, TipoAllineamento.SINISTRA, false, 7, false));
tab.Colonne.Add(new Colonna("NomeProdotto", "Nome Prodotto", 205, TipoAllineamento.SINISTRA, false, 7, false));
tab.Colonne.Add(new Colonna("Controvalore", "Controvalore* (€)", 103, TipoAllineamento.DESTRA, false, 7, false));
tab.Colonne.Add(new Colonna("Peso", "Peso** (%)", 92, TipoAllineamento.DESTRA, false, 7, false));
tab.AltezzaCella = 23;
datitab.setCellSpace(0);
//setta posizione tabella
tab.Draw(datitab, document);
float dim = datitab.GetRowDim() * (datitab.getNumRow() + 1);
#endregion
document.setLastPos(dim);
#region Tabella Totale Prodotti
datitab = new DatiTabella();
//Tabella tabProdotti = new Tabella(document.getMargineLeft(), document.getLastPos() + tab.AltezzaTabella + 30);
Tabella tabProdotti = new Tabella(document.getMargineLeft(), document.getLastPos());
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tab.HeaderFont = 8;
tabProdotti.AltezzaCella = 23;
tabProdotti.Header = false;
tabProdotti.LineaFineTabella = false;
tabProdotti.Datasource = set.Tables["TotaleProdotti"];
datitab.table = set.Tables["TotaleProdotti"];
//datitab.setY(document.getLastPos());
//datitab.setIsLinee(1);
tabProdotti.Colonne.Add(new Colonna("Descrizione", "", 328, TipoAllineamento.SINISTRA, true, 7, true));
tabProdotti.Colonne.Add(new Colonna("TotaleControvalore", "", 100, TipoAllineamento.DESTRA, true, 7, true));
tabProdotti.Colonne.Add(new Colonna("TotalePeso", "", 92, TipoAllineamento.DESTRA, true, 7, true));
tabProdotti.Draw(datitab, document);
#endregion
// setto la posizione aggiornata
//dim = datitab.GetRowDim();
//document.setLastPos(dim + 5);
#region Tabella Totale Patrimonio
datitab = new DatiTabella();
Tabella tabPatrimonio = new Tabella(document.getMargineLeft(), document.getLastPos() + tabProdotti.AltezzaCella + 3);
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tab.HeaderFont = 8;
tabPatrimonio.AltezzaCella = 23;
tabPatrimonio.Header = false;
tabPatrimonio.LineaFineTabella = false;
tabPatrimonio.Datasource = set.Tables["TotalePatrimonio"];
datitab.table = set.Tables["TotalePatrimonio"];
//datitab.setY(document.getLastPos());
//datitab.setIsLinee(1);
tabPatrimonio.Colonne.Add(new Colonna("Descrizione", "", 328, TipoAllineamento.SINISTRA, true, 7, true));
tabPatrimonio.Colonne.Add(new Colonna("TotaleControvalore", "", 100, TipoAllineamento.DESTRA, true, 7, true));
tabPatrimonio.Colonne.Add(new Colonna("TotalePeso", "", 92, TipoAllineamento.DESTRA, true, 7, true));
tabPatrimonio.Draw(datitab, document);
#endregion
//20180913 Aggiunto perché la tabella potrebbe essere molto lunga, quindi rimandare alla pagina successiva.
page = document.getCurrentPage();
#region Note
/*********************** Modifica per Trimestrale sovrapposizione note con tabella - Pino **************************/
//document.setLastPos(datitab.getNumRow());
if (datitab.getNumRow() == 1)
document.setLastPos(datitab.getNumRow() - 1);
else
document.setLastPos(datitab.GetRowDim() * (datitab.getNumRow() + 1));
/***************************************************************************************************************/
if (!string.IsNullOrEmpty(nota1))
{
/************* Modifica per la gestione della nota dinamica in base ai prodotti FAI 12/03/2021 - Pino *********************/
//string testoNotaFAI = " Il controvalore dei fondi Perennius Global Yield Private 2011, Idea Crescita Globale, FAI Private Debt Special Opportunities e FAI Private Markets Insight esposto nella rendicontazione è determinato tramite il NAV trimestrale al #dataFAI# (ultimo disponibile alla data di predisposizione del presente rendiconto) al netto delle distribuzioni avvenute nel trimestre e accreditate sul conto corrente indicato in fase di sottoscrizione.";
string testoNotaFAI = " Il controvalore dei fondi di Investimento alternativi è determinato tenuto conto del NAV ufficiale trimestrale al #dataFAI# (ultimo disponibile alla data di predisposizione del presente rendiconto) al netto di eventuali richiami e/o distribuzioni di capitale effettuati successivamente.";
DSNotaFAI _dsNotaFAI = new DSNotaFAI();
List<SessionStruct> tabelleSessione = new List<SessionStruct>();
DataTable _dt = new DataTable();
_dt.TableName = "[C6StagingPeriodico].[ClienteProdottiFAI]";
tabelleSessione.Add(new SessionStruct(string.Concat("[C6StagingPeriodico].[ClienteProdottiFAI]", "|", dataThread.Rete, "|", dataThread.CodiceFiscale), _dt));
DataSectionResult result = _dsNotaFAI.getDataSection(tabelleSessione, "[C6StagingPeriodico].[ClienteProdottiFAI]", dataThread);
DataSetNotaFAI setNotaFAI = (DataSetNotaFAI)result.DatiSezione;
string _flagNotaFAI = setNotaFAI.FlagNotaFAI.Rows[0][0].ToString();
if (_flagNotaFAI == "S")
{
// Sostituisco al marcatore nella variabile testoNotaFaI il valore presente nel datatable
testoNotaFAI = testoNotaFAI.Replace("#dataFAI#", setNotaFAI.FlagNotaFAI.Rows[0][1].ToString());
nota1 += testoNotaFAI;
}
/******************************************************************************************************************************/
FormattedTextArea text = new FormattedTextArea(nota1, document.getMargineLeft(), document.getLastPos() + tabPatrimonio.AltezzaCella - 5, 510, 50, new ceTe.DynamicPDF.FontFamily("pipp", Globals.OpenTypeFontVerdana, Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaZ, Globals.OpenTypeFontVerdanaZ), 7, false);
text.Height = text.GetRequiredHeight();
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
page.Elements.Add(text);
dim = text.Height;
}
if (!string.IsNullOrEmpty(nota2))
{
FormattedTextArea text = new FormattedTextArea(nota2, document.getMargineLeft(), document.getLastPos() + tabPatrimonio.AltezzaCella + dim, 510, 50, new ceTe.DynamicPDF.FontFamily("pipp", Globals.OpenTypeFontVerdana, Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaZ, Globals.OpenTypeFontVerdanaZ), 7, false);
text.Height = text.GetRequiredHeight();
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
page.Elements.Add(text);
}
#endregion
document.setLastPos(document.getLastPos() + 500);
}
else
{
document.setLastPos(document.getLastPos() + 500);
}
}
}
#endregion
public void writeSezioneNew(DataThread dataThread)
{
dataThread.SETDATA();
DocumentPDF document = dataThread.DocumentPDF;
DataSetS180 set = (DataSetS180)dataThread.Data.DatiSezione;
//20180820 CR Professionali: la tabella non va visualizzata per i clienti professionali
if (!dataThread.IsProfessionalClient)
{
if (set.Tables["DettaglioComplessita"].Rows.Count > 0)
{
// 20181219 Fix bug di spaginazione della tabella complessità alta, in caso venga stampata a cavallo di due pagine
//if (!document.LastSectionCheckIn.Equals("S179")) // Se non si è passati per la S179
if (!document.LastSectionCheckIn.Equals("S184")) // Se non si è passati per la S184 o per la 179
{
if (dataThread.TipoReport.Equals("DIAGNOSI"))
{
document.changePage();
document.nextPage(document.getMargineLeft());
}
//else
//{
// document.setLastPos(document.getLastPos());
//}
}
else
{
if (document.getLastPos() >= 500)
{
document.changePage();
document.nextPage(document.getMargineLeft());
}
}
//if (document.getLastPos() >= 940) //840
//{
// document.changePage();
// document.nextPage(document.getMargineLeft());
//}
ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
document.setSezTitoloDiagnosi(dataThread.SezioneReport.Titolo);
string nota1 = dataThread.SezioneReport.Nota;
string nota2 = dataThread.SezioneReport.NotaAlternativa;
DataRow[] row = set.Tables["DettaglioComplessita"].Select("Ordine=1");
string testo = string.Empty;
if (row.Length > 0)
{
testo = row[0]["Descrizione"].ToString();
}
document.setChapterHeader(testo, 0, 520, 8);
//string tempTesto = dataThread.SezioneReport.TestoIntroduttivo;
//document.setChapterHeader(tempTesto.Replace("$/Banca/$", dataThread.NomeRete).Replace("Sanpaolo Invest", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest"), 0, 520, 8);
document.setHeaderSpace(5);
DatiTabella datitab = new DatiTabella();
#region Tabella Dettaglio Complessita Prodotti Alta
Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos());
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tab.HeaderFont = 8;
tab.Header = true;
tab.LineaFineTabella = false;
tab.Datasource = datitab.table;
datitab.table = set.Tables["DettaglioComplessita"].Select("Ordine=1").CopyToDataTable();
datitab.setY(document.getLastPos());
tab.Colonne.Add(new Colonna("CodiceContratto", "Codice Contratto", 80, TipoAllineamento.SINISTRA, false, 7, false));
tab.Colonne.Add(new Colonna("NomeProdotto", "Nome Prodotto", 148, TipoAllineamento.SINISTRA, false, 7, false));
tab.Colonne.Add(new Colonna("Complessita", "Complessità", 100, TipoAllineamento.DESTRA, false, 7, false));
tab.Colonne.Add(new Colonna("Controvalore", "Controvalore* (€)", 100, TipoAllineamento.DESTRA, false, 7, false));
tab.Colonne.Add(new Colonna("Peso", "Peso** (%)", 92, TipoAllineamento.DESTRA, false, 7, false));
tab.AltezzaCella = 23;
datitab.setCellSpace(0);
//setta posizione tabella
tab.Draw(datitab, document);
float dim = datitab.GetRowDim() * (datitab.getNumRow() + 1);
#endregion
document.setLastPos(dim);
#region Tabella Totale Complessita Prodotti Alta
datitab = new DatiTabella();
//Tabella tabProdotti = new Tabella(document.getMargineLeft(), document.getLastPos() + tab.AltezzaTabella + 30);
Tabella tabProdottiAlta = new Tabella(document.getMargineLeft(), document.getLastPos());
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tab.HeaderFont = 8;
tabProdottiAlta.AltezzaCella = 23;
tabProdottiAlta.Header = false;
tabProdottiAlta.LineaFineTabella = false;
tabProdottiAlta.Datasource = set.Tables["TotaliComplessita"];
datitab.table = set.Tables["TotaliComplessita"].Select("Ordine=1").CopyToDataTable(); ;
tabProdottiAlta.Colonne.Add(new Colonna("Descrizione", "", 328, TipoAllineamento.SINISTRA, true, 7, true));
tabProdottiAlta.Colonne.Add(new Colonna("SommaControvalore", "", 100, TipoAllineamento.DESTRA, true, 7, true));
tabProdottiAlta.Colonne.Add(new Colonna("SommaPesi", "", 92, TipoAllineamento.DESTRA, true, 7, true));
tabProdottiAlta.Draw(datitab, document);
float dimTA = datitab.GetRowDim() * (datitab.getNumRow());
#endregion
document.setLastPos(0);
#region Tabella Dettaglio Complessita Prodotti MedioAlta Alta
DatiTabella datitabMAA = new DatiTabella();
Tabella tabMedioAlta = new Tabella(document.getMargineLeft(), document.getLastPos());
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tabMedioAlta.HeaderFont = 8;
tabMedioAlta.Header = false;
tabMedioAlta.LineaFineTabella = false;
tabMedioAlta.Datasource = datitabMAA.table;
datitabMAA.table = set.Tables["DettaglioComplessita"].Select("Ordine=2").CopyToDataTable();
datitabMAA.setY(document.getLastPos());
tabMedioAlta.Colonne.Add(new Colonna("CodiceContratto", "Codice Contratto", 80, TipoAllineamento.SINISTRA, false, 7, false));
tabMedioAlta.Colonne.Add(new Colonna("NomeProdotto", "Nome Prodotto", 148, TipoAllineamento.SINISTRA, false, 7, false));
tabMedioAlta.Colonne.Add(new Colonna("Complessita", "Complessità", 100, TipoAllineamento.DESTRA, false, 7, false));
tabMedioAlta.Colonne.Add(new Colonna("Controvalore", "Controvalore* (€)", 100, TipoAllineamento.DESTRA, false, 7, false));
tabMedioAlta.Colonne.Add(new Colonna("Peso", "Peso** (%)", 92, TipoAllineamento.DESTRA, false, 7, false));
tabMedioAlta.AltezzaCella = 23;
datitabMAA.setCellSpace(0);
//setta posizione tabella
tabMedioAlta.Draw(datitabMAA, document);
dim = datitabMAA.GetRowDim() * (datitabMAA.getNumRow() - 1);
#endregion
document.setLastPos(dim);
#region Tabella Totale Complessita Prodotti Medio Alta Alta
DatiTabella datitabTotMAA = new DatiTabella();
//Tabella tabProdotti = new Tabella(document.getMargineLeft(), document.getLastPos() + tab.AltezzaTabella + 30);
Tabella tabProdottiMedioAlta = new Tabella(document.getMargineLeft(), document.getLastPos());
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tabProdottiMedioAlta.HeaderFont = 8;
tabProdottiMedioAlta.AltezzaCella = 23;
tabProdottiMedioAlta.Header = false;
tabProdottiMedioAlta.LineaFineTabella = false;
tabProdottiMedioAlta.Datasource = datitabTotMAA.table;
datitabTotMAA.table = set.Tables["TotaliComplessita"].Select("Ordine=2").CopyToDataTable(); ;
tabProdottiMedioAlta.Colonne.Add(new Colonna("Descrizione", "", 328, TipoAllineamento.SINISTRA, true, 7, true));
tabProdottiMedioAlta.Colonne.Add(new Colonna("SommaControvalore", "", 100, TipoAllineamento.DESTRA, true, 7, true));
tabProdottiMedioAlta.Colonne.Add(new Colonna("SommaPesi", "", 92, TipoAllineamento.DESTRA, true, 7, true));
tabProdottiMedioAlta.Draw(datitabTotMAA, document);
#endregion
document.setLastPos(0);
#region Tabella Dettaglio Complessita Prodotti MedioBasso MedioAlta Alta
DatiTabella datitabMAMBA = new DatiTabella();
Tabella tabMedioBassoMeadioAltaAlta = new Tabella(document.getMargineLeft(), document.getLastPos());
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tabMedioBassoMeadioAltaAlta.HeaderFont = 8;
tabMedioBassoMeadioAltaAlta.Header = false;
tabMedioBassoMeadioAltaAlta.LineaFineTabella = false;
tabMedioBassoMeadioAltaAlta.Datasource = datitabMAMBA.table;
//for (int i = 0; i < 5; i++)
//{
// DataRow testRow = set.Tables["DettaglioComplessita"].NewRow();
// testRow["Complessita"] = "c";
// testRow["Ordine"] = 3;
// testRow["NomeProdotto"] = "NomeProdotto";
// testRow["Descrizione"] = "Descrizione";
// testRow["CodiceContratto"] = "CodiceContratto";
// testRow["Peso"] = 10;
// testRow["ControvaloreDecimale"] = 1000;
// testRow["Controvalore"] = 1000;
// testRow["PesoDecimale"] = 20;
// testRow["TotalePatrimonio"] = 5000;
// set.Tables["DettaglioComplessita"].Rows.Add(testRow);
//}
//set.Tables["DettaglioComplessita"].Rows.Add(set.Tables["DettaglioComplessita"].Rows[0]);
//set.Tables["DettaglioComplessita"].Rows.Add(set.Tables["DettaglioComplessita"].Rows[0]);
//set.Tables["DettaglioComplessita"].Rows.Add(set.Tables["DettaglioComplessita"].Rows[0]);
//set.Tables["DettaglioComplessita"].Rows.Add(set.Tables["DettaglioComplessita"].Rows[0]);
datitabMAMBA.table = set.Tables["DettaglioComplessita"].Select("Ordine=3").CopyToDataTable();
datitabMAMBA.setY(document.getLastPos());
tabMedioBassoMeadioAltaAlta.Colonne.Add(new Colonna("CodiceContratto", "Codice Contratto", 80, TipoAllineamento.SINISTRA, false, 7, false));
tabMedioBassoMeadioAltaAlta.Colonne.Add(new Colonna("NomeProdotto", "Nome Prodotto", 148, TipoAllineamento.SINISTRA, false, 7, false));
tabMedioBassoMeadioAltaAlta.Colonne.Add(new Colonna("Complessita", "Complessità", 100, TipoAllineamento.DESTRA, false, 7, false));
tabMedioBassoMeadioAltaAlta.Colonne.Add(new Colonna("Controvalore", "Controvalore* (€)", 100, TipoAllineamento.DESTRA, false, 7, false));
tabMedioBassoMeadioAltaAlta.Colonne.Add(new Colonna("Peso", "Peso** (%)", 92, TipoAllineamento.DESTRA, false, 7, false));
tabMedioBassoMeadioAltaAlta.AltezzaCella = 23;
datitabMAMBA.setCellSpace(0);
//setta posizione tabella
tabMedioBassoMeadioAltaAlta.Draw(datitabMAMBA, document);
dim = datitabMAMBA.GetRowDim() * (datitabMAMBA.getNumRow() - 1);
var dimTabellaMAMBA = datitabMAMBA.GetRowDim() * (datitabMAMBA.getNumRow()+1);
#endregion
document.getLastPos();
document.setLastPos(dimTabellaMAMBA);
#region Tabella Totale Complessita Prodotti Medio Bassa Medio Alta Alta
DatiTabella datitabTotMBMAA = new DatiTabella();
Tabella tabProdottiMedioBMAA = new Tabella(document.getMargineLeft(), document.getLastPos());
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tabProdottiMedioBMAA.HeaderFont = 8;
tabProdottiMedioBMAA.AltezzaCella = 23;
tabProdottiMedioBMAA.Header = false;
tabProdottiMedioBMAA.LineaFineTabella = false;
tabProdottiMedioBMAA.Datasource = datitabTotMBMAA.table;
datitabTotMBMAA.table = set.Tables["TotaliComplessita"].Select("Ordine=3").CopyToDataTable(); ;
tabProdottiMedioBMAA.Colonne.Add(new Colonna("Descrizione", "", 328, TipoAllineamento.SINISTRA, true, 7, true));
tabProdottiMedioBMAA.Colonne.Add(new Colonna("SommaControvalore", "", 100, TipoAllineamento.DESTRA, true, 7, true));
tabProdottiMedioBMAA.Colonne.Add(new Colonna("SommaPesi", "", 92, TipoAllineamento.DESTRA, true, 7, true));
int paginaCorrente = document.CurrentPage;
tabProdottiMedioBMAA.Draw(datitabTotMBMAA, document);
dim = datitabTotMBMAA.GetRowDim() * (datitabTotMBMAA.getNumRow() - 1);
#endregion
/*** Fix nel caso in cui le righe del totale parziale dell'ultima tabella e quello totale vengono scritti nella pagina successiva ***/
if ((document.CurrentPage != paginaCorrente) && (document.getLastPos() <= 165))
{
document.setLastPos(datitabTotMBMAA.GetRowDim() + 23);
}
else
document.setLastPos(dim + 2);
#region Tabella Totale Generale
DatiTabella datitabTotGenerale = new DatiTabella();
Tabella tabTotGenerale = new Tabella(document.getMargineLeft(), document.getLastPos());
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tabTotGenerale.HeaderFont = 8;
tabTotGenerale.AltezzaCella = 23;
tabTotGenerale.Header = false;
tabTotGenerale.LineaFineTabella = false;
tabTotGenerale.Datasource = datitabTotGenerale.table;
datitabTotGenerale.table = set.Tables["TotaleGenerale"];
tabTotGenerale.Colonne.Add(new Colonna("Descrizione", "", 328, TipoAllineamento.SINISTRA, true, 7, true));
tabTotGenerale.Colonne.Add(new Colonna("TotalePatrimonioCTV", "", 100, TipoAllineamento.DESTRA, true, 7, true));
tabTotGenerale.Colonne.Add(new Colonna("TotalePatrimonioPesi", "", 92, TipoAllineamento.DESTRA, true, 7, true));
tabTotGenerale.Draw(datitabTotGenerale, document);
#endregion
document.setNotaPieDiPagina(nota2);
document.setNotaPieDiPagina(nota1);
//Rimozione della pagina bianca dopo l'ultima
if (dataThread.TipoReport == "DIAGNOSI")
{
var xxxx = document.getLastPos();
document.setLastPos(document.getLastPos() * -1);
}
else
{
document.setLastPos(document.getLastPos() + 100);
}
}
}
}
public void writeSezionePerTest(DataThread dataThread)
{
/*** TEST - Verifica Tempistica 09/11/2023 - Pino ****/
/*** Inserimento log per verifica tempistica della sezione ***/
//DateTimeOffset dateOffsetValueIni = DateTimeOffset.Parse(DateTime.Now.ToString("hh:mm:ss.ffff"));
/*************************************************************/
DocumentPDF document = dataThread.DocumentPDF;
DataSetS180 set = (DataSetS180)dataThread.Data.DatiSezione;
//20180820 CR Professionali: la tabella non va visualizzata per i clienti professionali
if (!dataThread.IsProfessionalClient)
{
if (set.Tables["DettaglioComplessita"].Rows.Count > 0)
{
// 20181219 Fix bug di spaginazione della tabella complessità alta, in caso venga stampata a cavallo di due pagine
//if (!document.LastSectionCheckIn.Equals("S179")) // Se non si è passati per la S179
if (!document.LastSectionCheckIn.Equals("S184")) // Se non si è passati per la S184 o per la 179
{
//if (dataThread.TipoReport.Equals("DIAGNOSI"))
//{
// document.changePage();
// document.nextPage(document.getMargineLeft());
//}
}
else
{
if (document.getLastPos() >= 500)
{
document.changePage();
document.nextPage(document.getMargineLeft());
}
}
document.LastSectionCheckIn = "S180";
ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
document.setSezTitoloDiagnosi(dataThread.SezioneReport.Titolo);
string nota1 = dataThread.SezioneReport.Nota;
string nota2 = dataThread.SezioneReport.NotaAlternativa;
DataRow[] row = set.Tables["DettaglioComplessita"].Select("Ordine=1");
string testo = string.Empty;
if (row.Length > 0)
{
testo = row[0]["Descrizione"].ToString();
}
document.setChapterHeader(testo, 0, 520, 8);
document.setHeaderSpace(5);
#region Aggiungo e valorizzo colonna dei totali per il ctv e per il peso
DatiTabella datitab = new DatiTabella();
DataTable tabFinale = new DataTable();
List<DettaglioConcentrazioneProdottiComplessi> _listaComplessiva = new List<DettaglioConcentrazioneProdottiComplessi>();
List<DettaglioConcentrazioneProdottiComplessi> _lista = UtilityBusinessLayer.ConvertTo<DettaglioConcentrazioneProdottiComplessi>(set.Tables["DettaglioComplessita"].Select("Ordine=1").CopyToDataTable());
decimal totaleOrdine = 0.0M;
decimal pesoOrdine = 0.0M;
totaleOrdine = _lista.Max(mm => mm.ControvaloreDecimale);
pesoOrdine = _lista.Max(mm => mm.PesoDecimale);
if (totaleOrdine != 0.0M)
{
_lista.Add(new DettaglioConcentrazioneProdottiComplessi()
{
CodiceContratto = "TOTALE PRODOTTI CON COMPLESSITA ALTA",
Ordine = 1,
Controvalore = Convert.ToDecimal(totaleOrdine).ToString("#,#0.00"),
Peso = Convert.ToDecimal(pesoOrdine).ToString("#,#0.00")
});
_listaComplessiva = _lista.Select(s => s).ToList();
}
_lista.Clear();
totaleOrdine = 0.0M;
pesoOrdine = 0.0M;
_lista = UtilityBusinessLayer.ConvertTo<DettaglioConcentrazioneProdottiComplessi>(set.Tables["DettaglioComplessita"].Select("Ordine=2").CopyToDataTable());
totaleOrdine = _lista.Max(mm => mm.ControvaloreDecimale);
pesoOrdine = _lista.Max(mm => mm.PesoDecimale);
if (totaleOrdine != 0.0M)
{
_lista.Add(new DettaglioConcentrazioneProdottiComplessi()
{
CodiceContratto = "TOTALE PRODOTTI CON COMPLESSITA MEDIO - ALTA e ALTA",
Ordine = 2,
Controvalore = Convert.ToDecimal(totaleOrdine).ToString("#,#0.00"),
Peso = Convert.ToDecimal(pesoOrdine).ToString("#,#0.00")
});
_listaComplessiva.AddRange(_lista);
}
_lista.Clear();
totaleOrdine = 0.0M;
pesoOrdine = 0.0M;
_lista = UtilityBusinessLayer.ConvertTo<DettaglioConcentrazioneProdottiComplessi>(set.Tables["DettaglioComplessita"].Select("Ordine=3").CopyToDataTable());
totaleOrdine = _lista.Max(mm => mm.ControvaloreDecimale);
pesoOrdine = _lista.Max(mm => mm.PesoDecimale);
if (totaleOrdine != 0.0M)
{
_lista.Add(new DettaglioConcentrazioneProdottiComplessi()
{
CodiceContratto = "TOTALE PRODOTTI CON COMPLESSITA MEDIO - BASSA,MEDIO - ALTA e ALTA",
Ordine = 3,
Controvalore = Convert.ToDecimal(totaleOrdine).ToString("#,#0.00"),
Peso = Convert.ToDecimal(pesoOrdine).ToString("#,#0.00")
});
_listaComplessiva.AddRange(_lista);
}
tabFinale = UtilityBusinessLayer.ToDataTable<DettaglioConcentrazioneProdottiComplessi>(_listaComplessiva);
Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos());
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tab.HeaderFont = 8;
tab.Header = true;
tab.LineaFineTabella = false;
tab.Datasource = datitab.table;
datitab.table = tabFinale;//.Select("Ordine <> 3").CopyToDataTable();
datitab.setY(document.getLastPos());
tab.Colonne.Add(new Colonna("CodiceContratto", "Codice Contratto", 80, TipoAllineamento.SINISTRA, false, 7, false));
tab.Colonne.Add(new Colonna("NomeProdotto", "Nome Prodotto", 148, TipoAllineamento.SINISTRA, false, 7, false));
tab.Colonne.Add(new Colonna("Complessita", "Complessità", 100, TipoAllineamento.DESTRA, false, 7, false));
tab.Colonne.Add(new Colonna("Controvalore", "Controvalore* (€)", 100, TipoAllineamento.DESTRA, false, 7, false));
tab.Colonne.Add(new Colonna("Peso", "Peso** (%)", 92, TipoAllineamento.DESTRA, false, 7, false));
tab.AltezzaCella = 23;
tab.SezioneDiProvenienza = "S180";
datitab.setCellSpace(0);
//setta posizione tabella
//tab.DrawProdottiComplessita(datitab, document);
tab.Draw(datitab, document);
#endregion
float posizioneFinaleTabella = (document.getLastPos() + datitab.GetTotalRowsDim());
#region Tabella Totale Generale
DatiTabella datitabTotGenerale = new DatiTabella();
Tabella tabTotGenerale = new Tabella(document.getMargineLeft()-3, posizioneFinaleTabella + 35); //document.getLastPos()
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tabTotGenerale.HeaderFont = 8;
tabTotGenerale.AltezzaCella = 23;
tabTotGenerale.Header = false;
tabTotGenerale.LineaFineTabella = false;
tabTotGenerale.Datasource = datitabTotGenerale.table;
datitabTotGenerale.table = set.Tables["TotaleGenerale"];
tabTotGenerale.Colonne.Add(new Colonna("Descrizione", "", 328, TipoAllineamento.SINISTRA, true, 7, true));
tabTotGenerale.Colonne.Add(new Colonna("TotalePatrimonioCTV", "", 100, TipoAllineamento.DESTRA, true, 7, true));
tabTotGenerale.Colonne.Add(new Colonna("TotalePatrimonioPesi", "", 92, TipoAllineamento.DESTRA, true, 7, true));
tabTotGenerale.Draw(datitabTotGenerale, document);
#endregion
document.setNotaPieDiPagina(nota2);
document.setNotaPieDiPagina(nota1);
//Prima impostazione di LastPos per aggiustare la pagina successiva valida solo per gli scaduti
if(dataThread.Scaduto == 2)
{
document.setLastPos(document.getLastPos() + 300);
}
//Rimozione della pagina bianca dopo l'ultima
if (dataThread.TipoReport == "DIAGNOSI")
document.setLastPos(document.getLastPos() * -1);
else
document.setLastPos(document.getLastPos() + 100);
}
}
/*** TEST - Verifica Tempistica 09/11/2023 - Pino ****/
/*** Inserimento log per verifica tempistica della sezione ***/
//DateTimeOffset dateOffsetValueFin = DateTimeOffset.Parse(DateTime.Now.ToString("hh:mm:ss.ffff"));
//var tDiff = dateOffsetValueFin - dateOffsetValueIni;
//logger.Trace("S180 " + tDiff);
/**************************************************************/
}
#endregion
}
}