225 lines
9.5 KiB
C#
225 lines
9.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using PDFGenerator.Presentation.Section.Tables;
|
|
using PDFGenerator.BusinessLayer.DataSection;
|
|
using PDFGenerator.BusinessLayer;
|
|
using System.Data;
|
|
using ceTe.DynamicPDF.Merger;
|
|
using PDFGenerator.BusinessLayer.DataSection;
|
|
using ceTe.DynamicPDF.PageElements;
|
|
|
|
|
|
namespace PDFGenerator.Presentation.Section
|
|
{
|
|
public class S183 : ISezione
|
|
{
|
|
|
|
string Titolo = string.Empty;
|
|
string _testotitolo;
|
|
string _testointroduttivo;
|
|
string _testoAlternativo;
|
|
public int widthImporti = 60;
|
|
public int widthData = 50;
|
|
public int fontsize = 6;
|
|
public int headerFontSize = 5;
|
|
NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
|
|
|
ImportedPage page;
|
|
|
|
/// <summary>
|
|
/// Testo introduttivo della sezione.
|
|
/// </summary>
|
|
public string TestoIntroduttivo
|
|
{
|
|
get
|
|
{
|
|
return _testointroduttivo;
|
|
}
|
|
set
|
|
{
|
|
_testointroduttivo = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Testo del titolo della sezione.
|
|
/// </summary>
|
|
//public string TestoTitolo
|
|
//{
|
|
// get
|
|
// {
|
|
// return _testotitolo;
|
|
// }
|
|
// set
|
|
// {
|
|
// _testotitolo = value;
|
|
// }
|
|
//}
|
|
|
|
//public string TestoAlternativo
|
|
//{
|
|
// get { return _testoAlternativo; }
|
|
// set { _testoAlternativo = value; }
|
|
//}
|
|
|
|
//public void setTitolo(string label)
|
|
//{
|
|
// Titolo = label;
|
|
//}
|
|
|
|
public S183()
|
|
{
|
|
//
|
|
// TODO: Add constructor logic here
|
|
//
|
|
}
|
|
|
|
#region ISezione Members
|
|
public void writeSezione(DataThread dataThread)
|
|
{
|
|
logger.Info("Inizio sezione S183 metodo writeSezione " + dataThread.CodiceFiscale);
|
|
|
|
DocumentPDF document = dataThread.DocumentPDF;
|
|
DataSet set = dataThread.Data.DatiSezione;
|
|
DatiTabella datitab = new DatiTabella();
|
|
|
|
//datitab.table = set.Tables["dtDettaglioProdottiESG"];
|
|
datitab.table = set.Tables["iCapital"];
|
|
|
|
#region Testo introduttivo tabella
|
|
// Titolo della sezione
|
|
logger.Info("Testo della sezione S183" + _testointroduttivo);
|
|
document.setLastPos(-40);
|
|
document.setChapterHeader(dataThread.SezioneReport.TestoIntroduttivo, 0, 520, 8);
|
|
#endregion
|
|
|
|
writeAreaProgetto(dataThread, datitab, set.Tables["iCapital"], document, "");
|
|
|
|
logger.Info("Fine sezione S183 metodo writeSezione " + dataThread.CodiceFiscale);
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Disegna la tabella per Area Investimento
|
|
/// Se si ha più di 1 progetto, verrà aggiunta una riga, in grassetto, per ciascun progetto
|
|
/// come titolo del progetto d'investimento.
|
|
/// </summary>
|
|
/// <param name="datitab"></param>
|
|
/// <param name="document"></param>
|
|
/// <param name="area"></param>
|
|
private void writeAreaProgetto(DataThread dataThread, DatiTabella datitab,DataTable datiProgetto, DocumentPDF document, string area)
|
|
{
|
|
logger.Info("Inizio sezione S183 metodo writeAreaProgetto " + dataThread.CodiceFiscale);
|
|
|
|
page = document.getCurrentPage();
|
|
float ytabella = 0; // unico incremento per la y di tutte le tabelle.
|
|
float ytabellaDettaglio = 0;
|
|
|
|
Tabella tabellaHeader = null;
|
|
|
|
#region Tabella Header
|
|
tabellaHeader = new Tabella(document.getMargineLeft(), document.getLastPos());
|
|
tabellaHeader.HeaderFont = 8;
|
|
tabellaHeader.AltezzaCella = 30;
|
|
tabellaHeader.Header = true; // la gestione dell'header viene fatta manualmente.
|
|
tabellaHeader.SaltoPagina = false;
|
|
|
|
/* Seleziono solo l'intestazione */
|
|
DataView viewHeader = new DataView(datitab.table);
|
|
viewHeader.RowFilter = ("CodArea = 'xxx'");
|
|
datitab.table = viewHeader.ToTable();
|
|
datitab.table.Rows.Add(datitab.table.NewRow()); // serve per far scrivere l'intestazione.
|
|
|
|
int fontdim = 8;
|
|
|
|
tabellaHeader.Colonne.Add(new Colonna("ContrattoSGR", "Contratto/SGR", 70, TipoAllineamento.SINISTRA, false, fontdim, false));
|
|
//tabellaHeader.Colonne.Add(new Colonna("<IMAGE>", " ", 10, TipoAllineamento.DESTRA, false, fontdim, false, TipoColonna.IMMAGINE));
|
|
tabellaHeader.Colonne.Add(new Colonna("NomeProdotto", "Nome prodotto", 80, TipoAllineamento.SINISTRA, false, fontdim, false));
|
|
tabellaHeader.Colonne.Add(new Colonna("DataInizio", "Data di sottoscrizione", 80, TipoAllineamento.DESTRA, false, fontdim, false));
|
|
tabellaHeader.Colonne.Add(new Colonna("Totale", "Totale<br>commitment (€)", 100, TipoAllineamento.DESTRA, false, fontdim, false));
|
|
tabellaHeader.Colonne.Add(new Colonna("ImportoVersato", "Importo<br>versato (€)", 100, TipoAllineamento.DESTRA, false, fontdim, false));
|
|
tabellaHeader.Colonne.Add(new Colonna("ImportoDaVersare", "Importo<br>da versare (€)", 100, TipoAllineamento.DESTRA, false, fontdim, false));
|
|
//--MIFID2
|
|
|
|
datitab.setCellSpace(0);
|
|
//Scrive la tabellaHeader
|
|
tabellaHeader.Draw(datitab, document, true);
|
|
ytabella += tabellaHeader.AltezzaTabella;
|
|
#endregion
|
|
|
|
#region Tabella Dati di Raggruppamento
|
|
DatiTabella datiTabProgetto = new DatiTabella();
|
|
datiTabProgetto.table = datiProgetto.Copy();
|
|
|
|
var soloProgetti = datiProgetto.AsEnumerable().Select(s => s.Field<string>("CodiceContratto")).Distinct().ToList();
|
|
|
|
|
|
foreach (var riga in soloProgetti)
|
|
{
|
|
if (riga != string.Empty)
|
|
{
|
|
/* Inseirsco la tabella con solo il Progetto interessato */
|
|
DataView viewProgetti = new DataView(datiProgetto);
|
|
viewProgetti.RowFilter = ("CodArea = '' and CodiceContratto = '" + riga + "'");
|
|
datiTabProgetto.table = viewProgetti.ToTable();
|
|
|
|
// TABELLA TITOLO DEL PROGETTO
|
|
Tabella tabellaTitoloProgetto = new Tabella(document.getMargineLeft(), document.getLastPos() + ytabella + ytabellaDettaglio);
|
|
tabellaTitoloProgetto.HeaderFont = 7;
|
|
tabellaTitoloProgetto.Header = false;
|
|
tabellaTitoloProgetto.SaltoPagina = false;
|
|
tabellaTitoloProgetto.Datasource = datiTabProgetto.table;
|
|
tabellaTitoloProgetto.LineeTabella = true;
|
|
tabellaTitoloProgetto.LineaFineTabella = true;
|
|
|
|
tabellaTitoloProgetto.Colonne.Add(new Colonna("CodiceContratto", "", 530, TipoAllineamento.SINISTRA, false, fontdim, false));
|
|
|
|
datiTabProgetto.setCellSpace(0);
|
|
//datiTabProgetto.setAlternRet();
|
|
|
|
tabellaTitoloProgetto.Draw(datiTabProgetto, document);
|
|
ytabella += tabellaTitoloProgetto.AltezzaTabella;
|
|
|
|
|
|
/* Inserisco il dettaglio del progetto interessato */
|
|
DatiTabella datiProdotti = new DatiTabella();
|
|
DataView viewProdotti = new DataView(datiProgetto);
|
|
viewProdotti.RowFilter = ("ContrattoSGR <> '' and CodiceContratto = '" + riga + "'");
|
|
datiProdotti.table = viewProdotti.ToTable();
|
|
|
|
Tabella TabellaProdotti = new Tabella(document.getMargineLeft(), document.getLastPos() + ytabella + ytabellaDettaglio);
|
|
TabellaProdotti.Header = false;
|
|
TabellaProdotti.HeaderFont = 7;
|
|
TabellaProdotti.AltezzaCella = 20;
|
|
TabellaProdotti.SaltoPagina = false;
|
|
TabellaProdotti.Datasource = datiProdotti.table;
|
|
TabellaProdotti.LineeTabella = true;
|
|
TabellaProdotti.LineaFineTabella = true;
|
|
|
|
TabellaProdotti.Colonne.Add(new Colonna("ContrattoSGR", "Contratto/SGR", 70, TipoAllineamento.SINISTRA, false, fontdim, false));
|
|
TabellaProdotti.Colonne.Add(new Colonna("NomeProdotto", "Nome prodotto", 80, TipoAllineamento.SINISTRA, false, fontdim, false));
|
|
TabellaProdotti.Colonne.Add(new Colonna("DataInizio", "Data di sottoscrizione", 80, TipoAllineamento.DESTRA, false, fontdim, false));
|
|
TabellaProdotti.Colonne.Add(new Colonna("Totale", "Totale commitment (€)", 100, TipoAllineamento.DESTRA, false, fontdim, false));
|
|
TabellaProdotti.Colonne.Add(new Colonna("ImportoVersato", "Importo versato (€)", 100, TipoAllineamento.DESTRA, false, fontdim, false));
|
|
TabellaProdotti.Colonne.Add(new Colonna("ImportoDaVersare", "Importo da versare (€)", 100, TipoAllineamento.DESTRA, false, fontdim, false));
|
|
datitab.setCellSpace(0);
|
|
|
|
//Scrive la TabellaProgetti
|
|
TabellaProdotti.Draw(datiProdotti, document, true);
|
|
ytabellaDettaglio += TabellaProdotti.AltezzaTabella;
|
|
ytabella += 2;
|
|
//break;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
logger.Info("Fine sezione S183 metodo writeAreaProgetto " + dataThread.CodiceFiscale);
|
|
}
|
|
|
|
|
|
#endregion
|
|
}
|
|
}
|