using System;
using System.Collections.Generic;
using System.Linq;
using Consulenza.ExternalServices;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;
using Consulenza.ReportWriter.Business.CHART_PDF;
using Consulenza.ReportCommon;
using Consulenza.ReportWriter.Business.Entity;
using System.Text;
using ceTe.DynamicPDF;
namespace Consulenza.ReportWriter.Manager.Section.Immobiliare.MonitoraggioNucleo
{
///
/// Scheda 15
///
public class S15 : Entity.Section
{
//public virtual bool presenzaContocorrenteInMonterio() { return GetOption().Valore; }
public S15(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S15", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
///
/// Scheda15. Analisi del rischio - Diversificazione del patrimonio
///
protected override sealed void Draw()
{
var dataset = GetDataSet();
#region Pagina 1
AddElement(new SpacePDF(40));
var titolo1 = new FormattedTextAreaPDF(getTesto1(), 35, 700) { FontSize = 10, FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left };
AddElement(titolo1);
// OGGI AddElement(new SpacePDF(20));
AddElement(new SpacePDF(10));
#region Tabella
var tabellaPatrimonio = new TablePDF(35, dataset.Tables["patrimonio"], dataset.Tables["patrimonioFooter"])
{
//Style = Style.Immobiliare,
//AlternateRow = false,
//HeaderHeight = 15,
//RowHeight = 10,
//ShowBorderLastLine = true
Style = Style.Immobiliare,
AlternateRow = false,
HeaderHeight = 15,
RowHeight = 10,
ShowBorderLastLine = false,
ShowBorderLastLineInPageBreak = false,
ShowBorderHeader = false
};
tabellaPatrimonio.Columns.Add(new ColumnPDF("descrizione", 170, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Descrizione", "Patrimonio complessivo") { DeltaYContent = 1 });
tabellaPatrimonio.Columns.Add(new ColumnPDF("valore", 130, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "Valore", "Valore totale (€)") { DeltaYContent = 1 });
tabellaPatrimonio.Columns.Add(new ColumnPDF("peso", 100, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "Peso", "Peso (%)") { DeltaYContent = 1 });
tabellaPatrimonio.FooterColumns.Add(new ColumnPDF("descrizione", 170, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo));
tabellaPatrimonio.FooterColumns.Add(new ColumnPDF("valore", 130, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo));
tabellaPatrimonio.FooterColumns.Add(new ColumnPDF("peso", 100, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo));
if (getNota2().Length > 0 || getNota3().Length > 0)
tabellaPatrimonio.Notes.Add(new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, getNota2() + getNota3()) { FontSize = 7, DeltaY = 3 });
#endregion
int i = 0;
foreach (DataRow rw in dataset.Tables["patrimonio"].Rows)
{
if (!dataset.Tables["patrimonio"].Rows[i]["Descrizione"].ToString().Contains(""))
tabellaPatrimonio.Cells[0, i].XContentOffset = 10;
i++;
}
AddElement(tabellaPatrimonio);
AddElement(new SpacePDF(20));
if (dataset.Tables["composizionePatrimonio"].Rows.Count > 0 )
{
var tabellaComposizione = new TablePDF(35, dataset.Tables["composizionePatrimonio"].AsEnumerable().OrderBy(x => x.Field("ordinamento")).CopyToDataTable(),
dataset.Tables["composizionePatrimonioFooter"])
{
//Style = Style.Immobiliare,
//AlternateRow = false,
//HeaderHeight = 15,
//RowHeight = 10,
//ShowBorderLastLine = true,
Style = Style.Immobiliare,
AlternateRow = false,
HeaderHeight = 15,
RowHeight = 10,
ShowBorderLastLine = false,
ShowBorderLastLineInPageBreak = false,
ShowBorderHeader = false
};
tabellaComposizione.Columns.Add(new ColumnPDF("composizione", 170, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Composizione", "Composizione patrimonio finanziario") { DeltaYContent = 1 });
tabellaComposizione.Columns.Add(new ColumnPDF("valore", 130, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "Valore", "Valore totale (€)") { DeltaYContent = 1 });
tabellaComposizione.Columns.Add(new ColumnPDF("peso", 100, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "Peso", "Peso (%)") { DeltaYContent = 1 });
tabellaComposizione.FooterColumns.Add(new ColumnPDF("composizione", 170, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo));
tabellaComposizione.FooterColumns.Add(new ColumnPDF("valore", 130, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo));
tabellaComposizione.FooterColumns.Add(new ColumnPDF("peso", 100, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo));
if (getNota4().Length > 0)
tabellaComposizione.Notes.Add(new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, getNota4()) { FontSize = 7, DeltaY = 3 });
AddElement(tabellaComposizione);
}
#endregion
AddElement(new ResetterYPDF());
#region Grafico torta
var serieTorta = new List();
foreach (var row in dataset.Tables["torta"].AsEnumerable())
{
serieTorta.Add(new Serie { Name = row["tipologia"].ToString() });
serieTorta[0].Points.Add(new Point
{
LabelAxisX = row["tipologia"].ToString(),
//Value = Convert.ToDouble(row["peso"]),
Value = Convert.ToDouble(Helper.FormatDecimal(Convert.ToDecimal(row["peso"]).ToString(),1)),
Color = getColor(row["tipologia"].ToString()),
ShowLabelAxisX = false,
ShowLabelAxisY = false,
FontSizeLabelAxisX = 10,
FontSizeLabelAxisY = 10
});
}
#endregion
var torta = new PiePDF(40 + tabellaPatrimonio.Width, 0.2F)
{
Width = 340,
Height = 340,
SeriesCollection = serieTorta,
StartAngle = 270,
ShowLabelPoints = true,
Style3DEnabled = false,
AutoIncrementYWritable = true,
LabelDecimalDigitsCount = 1,
FontLabelSize = 5f,
CustomPlottingHeight = 50,
CustomPlottingWidth = 50,
CustomPlottingX = 25,
CustomPlottingY = 7,
UseCustomPlotting = true,
};
//AddElement(new SpacePDF(95));
//AddElement(torta);
//var tortaTitolo = new FormattedTextAreaPDF(string.Format("{0}", "Patrimonio complessivo"), 130 + tabellaPatrimonio.Width) { FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard, FontSize = 10, FontBold = true, AutoIncrementYWritable = true, DeltaY = -2 };
//AddElement(new SpacePDF(-10));
//AddElement(tortaTitolo);
AddElement(new SpacePDF(70));
var tortaTitolo = new FormattedTextAreaPDF(string.Format("{0}", "Patrimonio complessivo"), 130 + tabellaPatrimonio.Width) { FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard, FontSize = 10, FontBold = true, AutoIncrementYWritable = true, DeltaY = -2 };
AddElement(tortaTitolo);
AddElement(torta);
var xLegenda1 = 0;
var xLegenda2 = 0;
if (dataset.Tables["composizionePatrimonio"].Rows.Count > 0)
{
xLegenda1 = 55 + (int)tabellaPatrimonio.Width;
xLegenda2 = 215 + (int)tabellaPatrimonio.Width;
}
else
{
//xLegenda1 = 85 + (int)tabellaPatrimonio.Width;
xLegenda2 = 145 + (int)tabellaPatrimonio.Width;
}
ColorPDF coloriUsoAbitativo = new ColorPDF(207, 220, 210);
ColorPDF coloriStrumentale = new ColorPDF(167, 192, 168);
ColorPDF coloriInvestimento = new ColorPDF(115, 152, 109);
ColorPDF coloriNonSpecificata = new ColorPDF(245, 245, 220);
ColorPDF coloriFideuram = new ColorPDF(174, 150, 81);
ColorPDF coloriTerzi = new ColorPDF(215, 206, 169);
float _yLegend = 340;
foreach (var row in dataset.Tables["torta"].AsEnumerable())
{
switch(row["indice"].ToString()) {
case "U":
var legendaUsoAbitativoRettangolo = new RectanglePDF(xLegenda2, 12, 17, coloriUsoAbitativo) { AutoIncrementYWritable = false, Y = _yLegend };
var legendaUsoAbitativoTesto = new FormattedTextAreaPDF(string.Format("{0}", "Immobili d'uso abitativo"), xLegenda2 + 25) { FontSize = 7, AutoIncrementYWritable = false, DeltaY = 0, Y = _yLegend };
AddElement(legendaUsoAbitativoRettangolo);
AddElement(legendaUsoAbitativoTesto);
_yLegend += 15;
break;
case "PF":
var legendaFideuram = new RectanglePDF(xLegenda1, 12, 17, coloriFideuram) { AutoIncrementYWritable = false, Y = _yLegend };
var legendaFideuramTesto = new FormattedTextAreaPDF(string.Format("{0}", "Patrimonio finanziario Fideuram"), xLegenda1 + 25) { FontSize = 7, AutoIncrementYWritable = false, DeltaY = 0, Y = _yLegend };
AddElement(legendaFideuram);
AddElement(legendaFideuramTesto);
if (dataset.Tables["torta"].AsEnumerable().Any(x => x.Field("indice").Equals("PT")))
_yLegend += 15;
break;
case "S":
var legendaStrumentaleRettangolo = new RectanglePDF(xLegenda2, 12, 17, coloriStrumentale) { AutoIncrementYWritable = false, Y = _yLegend };
var legendaStrumentaleTesto = new FormattedTextAreaPDF(string.Format("{0}", "Immobili strumentali"), xLegenda2 + 25) { FontSize = 7, AutoIncrementYWritable = false, DeltaY = 0, Y = _yLegend };
AddElement(legendaStrumentaleRettangolo);
AddElement(legendaStrumentaleTesto);
_yLegend += 15;
break;
case "PT":
var legendaTerzi = new RectanglePDF(xLegenda1, 12, 17, coloriTerzi) { AutoIncrementYWritable = false, Y = _yLegend };
var legendaTerziTesto = new FormattedTextAreaPDF(string.Format("{0}", "Patrimonio finanziario altri istituti"), xLegenda1 + 25) { FontSize = 7, AutoIncrementYWritable = false, DeltaY = 0, Y = _yLegend };
AddElement(legendaTerzi);
AddElement(legendaTerziTesto);
if (dataset.Tables["torta"].AsEnumerable().Any(x => x.Field("indice").Equals("S") || x.Field("indice").Equals("NS")
|| x.Field("indice").Equals("U") || x.Field("indice").Equals("I")))
_yLegend = 340;
break;
case "I":
var legendaInvestimentoRettangolo = new RectanglePDF(xLegenda2, 12, 17, coloriInvestimento) { AutoIncrementYWritable = false, Y = _yLegend };
var legendaInvestimentoTesto = new FormattedTextAreaPDF(string.Format("{0}", "Immobili d'investimento"), xLegenda2 + 25) { FontSize = 7, AutoIncrementYWritable = true, DeltaY = 0, Y = _yLegend };
AddElement(legendaInvestimentoRettangolo);
AddElement(legendaInvestimentoTesto);
_yLegend += 15;
break;
case "NS":
var legendaNonSpecificataRettangolo = new RectanglePDF(xLegenda2, 12, 17, coloriNonSpecificata) { AutoIncrementYWritable = false, Y = _yLegend };
var legendaNonSpecificataTesto = new FormattedTextAreaPDF(string.Format("{0}", "Finalità non specificata"), xLegenda2 + 25) { FontSize = 7, AutoIncrementYWritable = true, DeltaY = 0, Y = _yLegend };
AddElement(legendaNonSpecificataRettangolo);
AddElement(legendaNonSpecificataTesto);
_yLegend += 15;
break;
}
}
float startFrameX = tabellaPatrimonio.X + tabellaPatrimonio.Width + 10;
float startFrameY = 79;
//addFrame(startFrameX, startFrameX + 305, startFrameY, startFrameY + 320);
addFrame(startFrameX, startFrameX + 320, startFrameY, startFrameY + 325);
AddElement(new PagePDF(PagePDF.PagePDFType.Generic));
var pagina2 = GetDataSet2();
var border = new RectanglePDF(332, 700, new ColorPDF(0, 0, 0))
{
Y = 105,
X = 40,
BorderColor = new ColorPDF(196, 196, 186),
BorderStyle = LineStylePDF.Solid,
BorderWidth = 0.75f,
Color = new ColorPDF(255, 255, 255),
AutoIncrementYWritable = false
};
AddElement(border);
DrawDiamondBar(570, 175, 100, 233, pagina2.Tables[1].Rows[0][2].ToString());
AddElement(new SpacePDF(40));
var titolo2 = new FormattedTextAreaPDF(getTesto2(), 35, 750) { FontSize = 10, FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard };
AddElement(titolo2);
AddElement(new SpacePDF(20));
var titoloRiquadro = new FormattedTextAreaPDF("Diversificazione del patrimonio complessivo", 40, 700)
{ FontSize = 10,
FontColor = ColorPDF.Bianco,
FontBold = true,
//BackGroundColor = ColorPDF.Immobiliare_Grigio_TitoloPiccolo,
BackGroundColor = new ColorPDF(196, 196, 186),
DeltaX = 5,
FixedHeight = 5,
DeltaY = 2 };
var titolo2_2 = new FormattedTextAreaPDF(getTesto2_2(), 40, 400) { AutoIncrementYWritable = true, FontSize = 9, FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard, DeltaX = 5, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify };
if (pagina2.Tables[0].Rows[1]["grado"].ToString().Trim() == "0,00" && pagina2.Tables[1].Rows[0]["gradoFooter"].ToString().Trim() == "0,00")
DrawCustomTable(50, 325, 105, 400, pagina2.Tables[0].Rows[0]["grado"].ToString(),
"n.c.",
"n.c.");
else
DrawCustomTable(50, 325, 105, 400, pagina2.Tables[0].Rows[0]["grado"].ToString(),
pagina2.Tables[0].Rows[1]["grado"].ToString(),
pagina2.Tables[1].Rows[0]["gradoFooter"].ToString());
TablePDF tablePDF = new TablePDF(40, pagina2.Tables[0], pagina2.Tables[1])
{
Style = Style.Immobiliare,
AlternateRow = false,
HeaderHeight = 25,
RowHeight = 25,
Footer = true,
PageBreak = true,
IndexesOfRowLinesToIgnoreSeparators = new List() { 0,1,2},
ShowSeparationLines = false,
HideLastSeparationLine = true,
HideFirstSeparationLine = true,
ShowBorderLastLine = false,
ShowBorderLastLineInPageBreak = false,
ShowFooterSeparationLines = false,
ShowBorderContent = false,
ShowBorderFooter = false,
ShowBorderHeader = false
};
tablePDF.Columns.Add(new ColumnPDF("immagine", 55, HorizontalAlignmentType.Destra, false, true, 11, ColumnType.Immagine, "immagine", "") { HeaderFontBold = true, ScaleColumnTypeImage = 0.1F, DeltaYContent = 7, PaddingLeft = -10 });
tablePDF.Columns.Add(new ColumnPDF("patrimonio", 145, HorizontalAlignmentType.Sinistra, false, true, 11, ColumnType.Testo, "patrimonio", "") { FontBold = false, HeaderFontBold = true, DeltaYContent = 1 });
tablePDF.Columns.Add(new ColumnPDF("grado", 190, HorizontalAlignmentType.Centrato, false, true, 11, ColumnType.Testo, "grado", "Diversificazione") { FontBold = false, HeaderFontBold = true, HeaderFontSize = 10, DeltaYContent = 1 });
tablePDF.FooterColumns.Add(new ColumnPDF("immagineFooter", 55, HorizontalAlignmentType.Destra, false, false, 12, ColumnType.Immagine) { ScaleColumnTypeImage = 0.12F, DeltaYContent = 2, PaddingLeft = -10 });
tablePDF.FooterColumns.Add(new ColumnPDF("patrimonioFooter", 145, HorizontalAlignmentType.Sinistra, false, false, 12, ColumnType.Testo) { FontBold = true });
tablePDF.FooterColumns.Add(new ColumnPDF("gradoFooter", 190, HorizontalAlignmentType.Centrato, false, false, 12, ColumnType.Testo) { FontBold = true, PaddingLeft = 2 });
tablePDF.FooterCells[0, 0].Value = "Diamond.png";
var titoloGradient = new FormattedTextAreaPDF("Patrimonio complessivo", 530, 300) { AutoIncrementYWritable = false, Y = 130, FontSize = 10, FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard, FontBold = true };
var imageGradient = new ImagePDF(550, 0.70F, "patrimonioComplessivoChart.png") { AutoIncrementYWritable = false, Y = 160 };
AddElement(titoloRiquadro);
AddElement(new SpacePDF(10));
AddElement(titolo2_2);
AddElement(new SpacePDF(20));
AddElement(titoloGradient);
var nota = new FormattedTextAreaPDF(getNota1(), 60, 400) { Y = EnvironmentFacade.RendererFacade.YLowerLimit - 20, FontSize = 6, FontColor = ColorPDF.Nero, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify };
AddElement(nota);
}
public void addFrame(float XupSx, float XupDx, float Yup, float Ydown)
{
var horizontalTopLine = new LinePDF(XupSx, Yup, XupDx, Yup, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false };
AddElement(horizontalTopLine);
var horizontalBottomLine = new LinePDF(XupSx, Ydown, XupDx, Ydown, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false };
AddElement(horizontalBottomLine);
var verticalLeftLine = new LinePDF(XupSx, Yup, XupSx, Ydown, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false };
AddElement(verticalLeftLine);
var verticalRightLine = new LinePDF(XupDx, Yup, XupDx, Ydown, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false };
AddElement(verticalRightLine);
}
private string getTesto1()
{
string testo = "";
testo = "Di seguito è rappresentato il patrimonio complessivo distinto tra patrimonio finanziario e immobiliare.";
return testo;
}
private string getTesto2()
{
string testo = "";
testo = "Di seguito è rappresentata la diversificazione del patrimonio complessivo, di quello finanziario e di quello immobiliare.";
return testo;
}
private string getTesto2_2()
{
string testo = "";
//testo = "La diversificazione del patrimonio complessivo* è calcolata sulla base della diversificazione della componente finanziaria "
// + "e di quella immobiliare, in base alla relativa rischiosità e al relativo controvalore.
";
//testo += "Al grado di diversificazione complessiva constribuisce anche il livello di correlazione complessiva tra le due componenti patrimoniali: "
// + "in generale, diversificare un portafoglio tra asset non correlati consente di ridurre il livello complessivo di rischio.
";
//testo += "La correlazione fra le due componenti (finanziaria e immobiliare) viene ipotizzata nulla, in ottica prudenziale, "
// + "qualora risultino storicamente non correlate (correlazione storica negativa fra asset finanziari e immobiliari).
";
//testo += "Inoltre, qualora il nucleo di riferimento sia composto da più soggetti con portafogli finanziari distinti "
// + "e per i quali il livello di rischio e di diversificazione siano stimati sui singoli portafogli, gli indicatori complessivi (di rischio e diversificazione) "
// + "vengono determinati come media ponderata per il controvalore dei singoli portafogli.
";
//testo += "Tale approccio prudenziale risulta coerente con le proprietà statistiche della misura di rischio utilizzata (Value at Risk) che implica la possibilità "
// + "che all'aumentare della diversificazione complessiva dei portafogli analizzati congiuntamente, il rischio complessivo non si riduca di conseguenza.";
testo = "La diversificazione del patrimonio complessivo* è calcolata sulla base della diversificazione della componente finanziaria "
+ "e di quella immobiliare, in base alla relativa rischiosità e al relativo controvalore.
";
testo += "Alla diversificazione complessiva contribuisce anche il livello di correlazione complessiva tra le due componenti patrimoniali: "
+ "in generale, diversificare un portafoglio tra asset non correlati consente di ridurre il livello complessivo di rischio.
";
testo += "La correlazione fra le due componenti (finanziaria e immobiliare) viene ipotizzata nulla, in ottica prudenziale, "
+ "qualora risultino storicamente non correlate (correlazione storica negativa fra asset finanziari e immobiliari).
";
testo += "Inoltre, qualora il nucleo di riferimento sia composto da più soggetti con portafogli finanziari distinti "
+ "e per i quali il livello di rischio e di diversificazione siano stimati sui singoli portafogli, gli indicatori complessivi (di rischio e diversificazione) "
+ "vengono determinati come media ponderata per il controvalore dei singoli portafogli.
";
testo += "Tale approccio prudenziale risulta coerente con le proprietà statistiche della misura di rischio utilizzata (Value at Risk) che implica la possibilità "
+ "che all'aumentare della diversificazione complessiva dei portafogli analizzati congiuntamente, il rischio complessivo non si riduca di conseguenza.";
return testo;
}
private string getNota1()
{
string testo = "";
testo = "* Il patrimonio complessivo considera il patrimonio finanziario e il patrimonio immobiliare.";
return testo;
}
public virtual string getNota2()
{
string nota = "";
string token = "";
decimal CCN_CASA = datiSeiUnico.CASA_CCN;
decimal GPELIGOFONDI_CASA = datiSeiUnico.CASA_GPELIGOFONDI;
decimal GPELIGTITOLI_CASA = datiSeiUnico.CASA_GPELIGTITOLI;
if (CCN_CASA != 0 || GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0)
{
nota += token + "Il controvalore esclude il saldo negativo";
token = " ";
if (CCN_CASA != 0)
{
nota += token + datiSeiUnico.FormatDecimal("dei conti correnti ({0} €)", CCN_CASA);
token = ", ";
}
if (GPELIGOFONDI_CASA != 0)
{
nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante la GP Eligo Fondi ({0} €)", GPELIGOFONDI_CASA);
token = ", ";
}
if (GPELIGTITOLI_CASA != 0)
{
nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante la GP Eligo Titoli ({0} €)", GPELIGTITOLI_CASA);
token = ", ";
}
nota += ".";
token = " ";
}
return nota;
}
public virtual string getNota3()
{
string nota = "";
if (datiSeiUnico.TRZ_CCN != 0)
{
nota += getNota2().Length > 0 ? "
" : "";
nota += datiSeiUnico.FormatDecimal("(*" + (getNota2().Length > 0 ? "*" : "") + ") Il controvalore esclude il saldo negativo dei conti correnti ({0} €).", datiSeiUnico.TRZ_CCN);
}
return nota;
}
public virtual string getNota4()
{
//string nota = "";
//if (datiSeiUnico.FNZ_OC != 0)
//{
// nota = datiSeiUnico.FormatDecimal("Grado di copertura pari a xx,xx%: non sono considerati i prodotti non rappresentabili ({0} €).", datiSeiUnico.FNZ_OC);
// //“(*) Grado di copertura pari a xx,xx%: non sono considerati [i prodotti non rappresentabili (x.xxx,xx €)][,] [gli importi relativi alle operazioni in corso (x.xxx,xx €)].”
//}
//return nota;
string nota = "";
string token = "";
var macroAssetClass = datiSeiUnico.patrimonioUnit().patrimonioFinanziario.macroAssetClass;
if (macroAssetClass != null && macroAssetClass.distribuzione != null)
{
//decimal GC = (presenzaContocorrenteInMonterio() ? macroAssetClass.distribuzione.coverageCC : macroAssetClass.distribuzione.coverage) * 100;
decimal GC = macroAssetClass.distribuzione.coverageCC * 100;
decimal OC_CASA = datiSeiUnico.CASA_OC;
//decimal CC_CASA = presenzaContocorrenteInMonterio() ? 0 : datiSeiUnico.CASA_CC;
decimal CC_CASA = datiSeiUnico.CASA_CC;
decimal PNR_CASA = 0;
if (datiSeiUnico.patrimonioUnit().patrimonioCasa.macroAssetClass != null && datiSeiUnico.patrimonioUnit().patrimonioCasa.macroAssetClass.distribuzione != null)
PNR_CASA = datiSeiUnico.patrimonioUnit().patrimonioCasa.macroAssetClass.distribuzione.totaleNonRappr;
//decimal CC_TERZI = presenzaContocorrenteInMonterio() ? 0 : datiSeiUnico.TRZ_CC;
decimal CC_TERZI = datiSeiUnico.TRZ_CC;
decimal PNR_TERZI = 0;
if (datiSeiUnico.patrimonioUnit().patrimonioTerzi.macroAssetClass != null && datiSeiUnico.patrimonioUnit().patrimonioTerzi.macroAssetClass.distribuzione != null)
PNR_TERZI = datiSeiUnico.patrimonioUnit().patrimonioTerzi.macroAssetClass.distribuzione.totaleNonRappr;
if (GC < 100)
{
nota += token + datiSeiUnico.FormatDecimal("Grado di copertura (%) della rappresentazione grafica per macro asset class pari a {0}", GC);
token = ": ";
if (PNR_CASA != 0 || CC_CASA != 0 || OC_CASA != 0 || PNR_TERZI != 0 || CC_TERZI != 0)
{
nota += token + "non sono considerati";
token = " ";
if (PNR_CASA != 0 || CC_CASA != 0 || OC_CASA != 0)
{
if (PNR_CASA != 0)
{
nota += token + datiSeiUnico.FormatDecimal("i prodotti non rappresentabili ({0} €)", PNR_CASA);
token = ", ";
}
if (CC_CASA != 0)
{
nota += token + datiSeiUnico.FormatDecimal("i conti correnti ({0} €)", CC_CASA);
token = ", ";
}
if (OC_CASA != 0)
{
nota += token + datiSeiUnico.FormatDecimal("gli importi relativi alle operazioni in corso ({0} €)", OC_CASA);
token = ", ";
}
token = " ";
nota += token + "del patrimonio $/Banca/$";
token = ", ";
}
if (PNR_TERZI != 0 || CC_TERZI != 0)
{
if (PNR_TERZI != 0)
{
nota += token + datiSeiUnico.FormatDecimal("i prodotti non rappresentabili ({0} €)", PNR_TERZI);
token = ", ";
}
if (CC_TERZI != 0)
{
nota += token + datiSeiUnico.FormatDecimal("i conti correnti ({0} €)", CC_TERZI);
token = ", ";
}
token = " ";
nota += token + "del patrimonio altri Istituti";
token = ", ";
}
}
//if (GC < 100)
//{
// nota += token + datiSeiUnico.FormatDecimal("Grado di copertura (%) della rappresentazione grafica per macro asset class pari a {0}", GC);
// token = ": ";
// if (PNR_TERZI != 0 || CC_TERZI != 0)
// {
// nota += token + "non sono considerati";
// token = " ";
// if (PNR_TERZI != 0 || CC_TERZI != 0)
// {
// if (PNR_TERZI != 0)
// {
// nota += token + datiSeiUnico.FormatDecimal("i prodotti non rappresentabili ({0} €)", PNR_TERZI);
// token = ", ";
// }
// if (CC_TERZI != 0)
// {
// nota += token + datiSeiUnico.FormatDecimal("i conti correnti ({0} €)", CC_TERZI);
// token = ", ";
// }
// token = ", ";
// }
// }
nota += ".";
token = " ";
}
}
nota = !nota.Equals("") ? " " + nota : nota;
return datiSeiUnico.FormatBanca(nota);
}
private void DrawDiamondBar(int x, int y, int width, int height, string val)
{
var border = new RectanglePDF(height + 40, width + 120, new ColorPDF(0, 0, 0))
{
Height = height + 75,
Width = width + 130,
X = x - 90,
Y = y - 55,
BorderColor = new ColorPDF(196, 196, 186),
BorderStyle = LineStylePDF.Solid,
BorderWidth = 0.75f,
Color = new ColorPDF(255,255,255),
AutoIncrementYWritable = false
};
AddElement(border);
double value = double.Parse(val.Replace("%", ""))/100;
var textMax = new FormattedTextAreaPDF("Max:100", x + width / 2, width / 2)
{
FontColor = new ColorPDF(91, 88, 79),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right,
FontSize = 10,
FontBold = true,
Y = y - 14,
AutoIncrementYWritable = false,
};
AddElement(textMax);
AddElement(new LinePDF(x, x + width, 0.5f, new ColorPDF(System.Drawing.Color.Black))
{
Color = new ColorPDF(91, 88, 79),
Y1 = y - 1,
Y2 = y - 1,
AutoIncrementYWritable = false
});
AddElement(new ImagePDF(x, 1, "gradientbar.png")
{
Y = y,
Width = width / 2,
Height = height,
AutoIncrementYWritable = false
});
AddElement(new LinePDF(x, x + width, 0.5f, new ColorPDF(System.Drawing.Color.Black))
{
Color = new ColorPDF(91, 88, 79),
Y1 = y + height,
Y2 = y + height,
AutoIncrementYWritable = false
});
var textMin = new FormattedTextAreaPDF("Min:0 ", x + width / 2, width / 2)
{
FontColor = new ColorPDF(91, 88, 79),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right,
FontSize = 10,
FontBold = true,
Y = y + height - 13,
AutoIncrementYWritable = false
};
AddElement(textMin);
var triangleImg = new ImagePDF(x - 26, 0.2f, "triangle_big.png")
{
//AutoIncrementYWritable = false,
//Y = y + height * (100 - (float)value) / 100 - 8
AutoIncrementYWritable = false,
Y = y + height * (100 - (float)value * 100) / 100 - 8
};
AddElement(triangleImg);
//var valueElement = new FormattedTextAreaPDF(((int)(value * 100)).ToString("D") + "%", x - 80, 50)
//var valueElement = new FormattedTextAreaPDF((value * 100).ToString(), x - 80, 50)
var valueElement = new FormattedTextAreaPDF();
if (value == 0)
valueElement = new FormattedTextAreaPDF("n.c.", x - 80, 50)
{
FontColor = new ColorPDF(91, 88, 79),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right,
FontSize = 10,
FontBold = true,
Y = y + height * (100 - (float)value * 100) / 100 - 6,
AutoIncrementYWritable = false
};
else
valueElement = new FormattedTextAreaPDF(Convert.ToDecimal(value * 100).ToString("#,##0.00").ToString(), x - 80, 50)
{
FontColor = new ColorPDF(91, 88, 79),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right,
FontSize = 10,
FontBold = true,
Y = y + height * (100 - (float)value * 100) / 100 - 6,
AutoIncrementYWritable = false
};
AddElement(valueElement);
//var imagePdf = new ImagePDF(x - 52, 0.2f, "Diamond.png")
//{
// Y = y + height * (100 - (float)value * 100) / 100 - 30,
// AutoIncrementYWritable = false
//};
var imagePdf = new ImagePDF(x - 56, 0.2f, "Diamond.png")
{
//Y = y + height * (100 - (float)value) / 100 - 30,
Y = y + height * (100 - (float)value * 100) / 100 - 30,
AutoIncrementYWritable = false
};
AddElement(imagePdf);
}
private void DrawCustomTable(int x, int y, int height, int width, string val1, string val2, string val3)
{
val1 = val1.Replace("%", "");
val2 = val2.Replace("%", "");
val3 = val3.Replace("%", "");
var border = new RectanglePDF(height, width, new ColorPDF(0, 0, 0))
{
Y = y,
X = x,
BorderColor = new ColorPDF(196, 196, 186),
BorderStyle = LineStylePDF.Solid,
BorderWidth = 0.75f,
Color = new ColorPDF(255, 255, 255),
AutoIncrementYWritable = false
};
AddElement(border);
var row0col1 = new FormattedTextAreaPDF("Diversificazione", x + 240, 150)
{
AutoIncrementYWritable = false,
Y = y + 10,
FontSize = 10,
FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard,
FontBold = true,
TextHorizontalAlign = TextAlign.Right
};
var lineTitle = new LinePDF(x + 290, x + 390, 0.75f, new ColorPDF(196, 196, 186))
{
Y1 = y + 25,
Y2 = y + 25
};
AddElement(lineTitle);
AddElement(new ImagePDF(x + 20, 0.13f, "StimaValore.png")
{
AutoIncrementYWritable = false,
Y = y + 32
});
var row1col0 = new FormattedTextAreaPDF("Patrimonio finanziario", x + 40, 150)
{
AutoIncrementYWritable = false,
Y = y + 35,
FontSize = 10,
FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard,
FontBold = true,
TextHorizontalAlign = TextAlign.Left
};
var row1col1 = new FormattedTextAreaPDF(val1, x + 340, 50)
{
AutoIncrementYWritable = false,
Y = y + 35,
FontSize = 10,
FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard,
FontBold = true,
TextHorizontalAlign = TextAlign.Right
};
AddElement(new ImagePDF(x + 20, 0.13f, "Fabbricati.png")
{
AutoIncrementYWritable = false,
Y = y + 52
});
var row2col0 = new FormattedTextAreaPDF("Patrimonio immobiliare", x + 40, 150)
{
AutoIncrementYWritable = false,
Y = y + 55,
FontSize = 10,
FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard,
FontBold = true,
TextHorizontalAlign = TextAlign.Left
};
var row2col1 = new FormattedTextAreaPDF(val2, x + 340, 50)
{
AutoIncrementYWritable = false,
Y = y + 55,
FontSize = 10,
FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard,
FontBold = true,
TextHorizontalAlign = TextAlign.Right
};
var longLine = new LinePDF(x + 10, x + 390, 0.75f, new ColorPDF(196, 196, 186))
{
Y1 = y + 74,
Y2 = y + 74
};
AddElement(longLine);
AddElement(new ImagePDF(x + 20, 0.13f, "Diamond.png")
{
AutoIncrementYWritable = false,
Y = y + 80
});
var row3col0 = new FormattedTextAreaPDF("Patrimonio complessivo", x + 40, 200)
{
AutoIncrementYWritable = false,
Y = y + 80,
FontSize = 10,
FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard,
FontBold = true,
TextHorizontalAlign = TextAlign.Left
};
var row3col1 = new FormattedTextAreaPDF(val3, x + 340, 50)
{
AutoIncrementYWritable = false,
Y = y + 80,
FontSize = 10,
FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard,
FontBold = true,
TextHorizontalAlign = TextAlign.Right
};
AddElement(row0col1);
AddElement(row1col0);
AddElement(row1col1);
AddElement(row2col0);
AddElement(row2col1);
AddElement(row3col0);
AddElement(row3col1);
}
///
/// Recupera i dati necessari alla Section restituendo un DataTable.
///
///
protected override DataTable GetDataTable()
{
return null;
}
protected DataSet GetDataSet2()
{
var parametri = new List
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "@chiaveNucleo",
Value = EnvironmentFacade.ReportEnvironment.NucleoImmobiliare.ChiaveNucleo
}
};
var dsOriginal = DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_ImmobiliareMonitoraggio_S_AnalisiRischioDiversificazione", parametri);
if (dsOriginal.Tables[0].Rows.Count == 0)
return null;
DataTable data = new DataTable();
data.Columns.Add("immagine", typeof(string));
data.Columns.Add("patrimonio", typeof(string));
data.Columns.Add("grado", typeof(string));
DataTable dataFooter = new DataTable();
dataFooter.Columns.Add("immagineFooter", typeof(string));
dataFooter.Columns.Add("patrimonioFooter", typeof(string));
dataFooter.Columns.Add("gradoFooter", typeof(string));
// ES INDICATORI DI DIVERSIFICAZIONE 11.05.2018
//data.Rows.Add("StimaValore.png", "Patrimonio finanziario", Helper.FormatPercentage(Convert.ToDecimal(dsOriginal.Tables[0].Rows[0]["GradoFinanziario"]) * 100, 0));
//data.Rows.Add("Fabbricati.png", "Patrimonio immobiliare", Helper.FormatPercentage(Convert.ToDecimal(dsOriginal.Tables[0].Rows[0]["GradoImmobiliare"]) * 100, 0));
//dataFooter.Rows.Add("Diamond.png", "Patrimonio complessivo", Helper.FormatPercentage(Math.Abs(Convert.ToDecimal(dsOriginal.Tables[0].Rows[0]["GradoComplessivo"]) * 100), 0));
data.Rows.Add("StimaValore.png", "Patrimonio finanziario", Helper.FormatDecimal((Convert.ToDecimal(dsOriginal.Tables[0].Rows[0]["GradoFinanziario"]) * 100).ToString(), 2));
data.Rows.Add("Fabbricati.png", "Patrimonio immobiliare", Helper.FormatDecimal((Convert.ToDecimal(dsOriginal.Tables[0].Rows[0]["GradoImmobiliare"]) * 100).ToString(), 2));
dataFooter.Rows.Add("Diamond.png", "Patrimonio complessivo", Helper.FormatDecimal((Convert.ToDecimal(dsOriginal.Tables[0].Rows[0]["GradoComplessivo"]) * 100).ToString(), 2));
//var _GradoFinanziario = datiSeiUnico.rischioUnit().rischio.rischioMercatoCredito.bancaFideuram.stat.diversificazione;
//var _GradoComplessivo = datiSeiUnico.rischioUnit().rischio.rischioMercatoCredito.totale.stat.diversificazione;
//data.Rows.Add("StimaValore.png", "Patrimonio finanziario", Helper.FormatPercentage(Convert.ToDecimal(_GradoFinanziario) * 100, 0));
//data.Rows.Add("Fabbricati.png", "Patrimonio immobiliare", Helper.FormatPercentage(Convert.ToDecimal(dsOriginal.Tables[0].Rows[0]["GradoImmobiliare"]) * 100, 0));
//dataFooter.Rows.Add("Diamond.png", "Patrimonio complessivo", Helper.FormatPercentage(Math.Abs(Convert.ToDecimal(_GradoComplessivo) * 100), 0));
DataSet set = new DataSet();
set.Tables.Add(data);
set.Tables.Add(dataFooter);
return set;
}
///
/// Recupera i dati necessari alla Section restituendo un DataSet.
///
///
protected override DataSet GetDataSet()
{
//var datiSei = datiSeiUnico;
//var finanziarioFideuram = datiSeiUnico.CASA_TOTALE;
//var finanziarioTerzi = datiSeiUnico.TRZ_TOTALE;
//var immobiliare = 0;
//var totale = finanziarioFideuram + finanziarioTerzi + immobiliare;
//var pesoFideuram = finanziarioFideuram * 100 / totale;
//var pesoTerzi = finanziarioTerzi * 100 / totale;
//var pesoImmobiliare = immobiliare * 100 / totale;
//decimal totaleFinanziario = 0;
var parametri = new List
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "chiaveNucleo",
Value = EnvironmentFacade.ReportEnvironment.NucleoImmobiliare.ChiaveNucleo
}
};
var dsOriginal = DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_Nucleo_Immobiliare_S2_Sintesi", parametri);
if (dsOriginal.Tables[0].Rows.Count == 0)
return null;
var datiSei = datiSeiUnico;
decimal nTotale = 0;
for (int k = 0; k < dsOriginal.Tables[0].Rows.Count; k++)
{
nTotale = nTotale + Convert.ToDecimal(dsOriginal.Tables[0].Rows[k]["ValoreStimatoTotale"]);
}
var finanziarioFideuram = datiSeiUnico.CASA_TOTALEPOSITIVO;
var finanziarioTerzi = datiSeiUnico.TRZ_TOTALE;
var immobiliare = nTotale;
var totale = finanziarioFideuram + finanziarioTerzi + immobiliare;
var pesoFideuram = finanziarioFideuram * 100 / totale;
var pesoTerzi = finanziarioTerzi * 100 / totale;
var pesoImmobiliare = immobiliare * 100 / totale;
decimal totaleFinanziario = 0;
//dsOriginal = DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_ImmobiliareMonitoraggio_S_AnalisiRischioSintesi", parametri);
dsOriginal = DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_ImmobiliareMonitoraggio_S_DettaglioFabbricatiNucleo", parametri);
if (dsOriginal.Tables[2].Rows.Count == 0)
return null;
DataSet ds = new DataSet();
ds.Tables.Add(new DataTable("patrimonio"));
ds.Tables.Add(new DataTable("patrimonioFooter"));
ds.Tables.Add(new DataTable("composizionePatrimonio"));
ds.Tables.Add(new DataTable("composizionePatrimonioFooter"));
ds.Tables.Add(new DataTable("torta"));
//ds.Tables["patrimonio"].Columns.Add(new DataColumn("space", typeof(string)));
ds.Tables["patrimonio"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
ds.Tables["patrimonio"].Columns.Add(new DataColumn("Valore", typeof(string)));
ds.Tables["patrimonio"].Columns.Add(new DataColumn("Peso", typeof(string)));
ds.Tables["patrimonioFooter"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
ds.Tables["patrimonioFooter"].Columns.Add(new DataColumn("Valore", typeof(string)));
ds.Tables["patrimonioFooter"].Columns.Add(new DataColumn("Peso", typeof(string)));
ds.Tables["composizionePatrimonio"].Columns.Add(new DataColumn("Composizione", typeof(string)));
ds.Tables["composizionePatrimonio"].Columns.Add(new DataColumn("Valore", typeof(string)));
ds.Tables["composizionePatrimonio"].Columns.Add(new DataColumn("Peso", typeof(string)));
ds.Tables["composizionePatrimonio"].Columns.Add(new DataColumn("Ordinamento", typeof(int)));
ds.Tables["composizionePatrimonioFooter"].Columns.Add(new DataColumn("Composizione", typeof(string)));
ds.Tables["composizionePatrimonioFooter"].Columns.Add(new DataColumn("Valore", typeof(string)));
ds.Tables["composizionePatrimonioFooter"].Columns.Add(new DataColumn("Peso", typeof(string)));
ds.Tables["torta"].Columns.Add(new DataColumn("indice", typeof(string)));
ds.Tables["torta"].Columns.Add(new DataColumn("tipologia", typeof(string)));
ds.Tables["torta"].Columns.Add(new DataColumn("peso", typeof(decimal)));
// Check se Totale > di 100
decimal nTotalePercento = Convert.ToDecimal(Helper.FormatDecimal(pesoTerzi.ToString(), 1)) + Convert.ToDecimal(Helper.FormatDecimal(pesoFideuram.ToString(), 1)) + Convert.ToDecimal(Helper.FormatDecimal(pesoImmobiliare.ToString(), 1));
if (nTotalePercento > 100)
{
if (pesoFideuram != 0)
pesoFideuram = pesoFideuram - Convert.ToDecimal(0.1);
else
pesoTerzi = pesoTerzi - Convert.ToDecimal(0.1);
}
if (nTotalePercento < 100)
{
if (pesoFideuram != 0)
pesoFideuram = pesoFideuram + Convert.ToDecimal(0.1);
else
pesoTerzi = pesoTerzi + Convert.ToDecimal(0.1);
}
// Fine Check
// TOTALI PATRIMONIO
if (finanziarioFideuram != 0)
ds.Tables["patrimonio"].Rows.Add("Patrimonio finanziario Fideuram" + (getNota2().Length > 0 ? "*" : "") + "", "" + Helper.FormatCurrency(finanziarioFideuram.ToString()) + "", "" + Helper.FormatPercentage(pesoFideuram, 1) + "");
if (finanziarioTerzi != 0)
ds.Tables["patrimonio"].Rows.Add("Patrimonio finanziario altri Istituti" + (getNota3().Length <= 0 ? "" : (getNota2().Length > 0 ? "**" : "*")) + "", "" + Helper.FormatCurrency(finanziarioTerzi.ToString()) + "", "" + Helper.FormatPercentage(pesoTerzi, 1) + "");
if(immobiliare != 0)
ds.Tables["patrimonio"].Rows.Add("Patrimonio immobiliare", "" + Helper.FormatCurrency(immobiliare.ToString()) + "", "" + Helper.FormatPercentage(pesoImmobiliare, 1) + "");
if (pesoFideuram != 0)
ds.Tables["torta"].Rows.Add("PF", "Patrimonio finanziario Fideuram", pesoFideuram);
if (pesoTerzi != 0)
ds.Tables["torta"].Rows.Add("PT", "Patrimonio finanziario altri Istituti", pesoTerzi);
// CALCOLO PER COMPOSIZIONE PATRIMONIO IMMOBILIARE
decimal nTotaleImmobiliare = 0;
for (int k = 0; k < dsOriginal.Tables[2].Rows.Count; k++)
{
var nPercentuale = Convert.ToDecimal(dsOriginal.Tables[2].Rows[k]["totale"].ToString()) * 100 / totale;
nTotaleImmobiliare = nTotaleImmobiliare + Convert.ToDecimal(Helper.FormatDecimal(Convert.ToDecimal(nPercentuale).ToString(), 1));
}
bool bMax = false;
bool bMin = false;
if (nTotaleImmobiliare > Convert.ToDecimal(Helper.FormatDecimal(Convert.ToDecimal(pesoImmobiliare).ToString(), 1)))
bMax = true;
else
{
if (nTotaleImmobiliare < Convert.ToDecimal(Helper.FormatDecimal(Convert.ToDecimal(pesoImmobiliare).ToString(), 1)))
bMin = true;
}
// DIVISIONE PATRIMONIO IMMOBILIARE
for (int k = 0; k < dsOriginal.Tables[2].Rows.Count; k++)
{
var percentuale = Convert.ToDecimal(dsOriginal.Tables[2].Rows[k]["totale"]) * 100 / totale;
if (bMax == true)
{
percentuale = percentuale - Convert.ToDecimal(0.1);
bMax = false;
}
else
{
if (bMin == true)
{
percentuale = percentuale + Convert.ToDecimal(0.1);
bMin = false;
}
}
ds.Tables["patrimonio"].Rows.Add(getTipologia(dsOriginal.Tables[2].Rows[k]["codFinalita"].ToString()), Helper.FormatCurrency(dsOriginal.Tables[2].Rows[k]["totale"].ToString()), Helper.FormatPercentage(percentuale, 1));
ds.Tables["torta"].Rows.Add(dsOriginal.Tables[2].Rows[k]["codFinalita"].ToString(), getTipologia(dsOriginal.Tables[2].Rows[k]["codFinalita"].ToString()), Helper.FormatDecimal(percentuale.ToString(), 1));
//ds.Tables["patrimonio"].Rows.Add(getTipologia(dsOriginal.Tables[2].Rows[k]["codFinalita"].ToString()), Helper.FormatCurrency(dsOriginal.Tables[2].Rows[k]["totale"].ToString()), Helper.FormatPercentage(Convert.ToDecimal(dsOriginal.Tables[2].Rows[k]["totale"]) * 100 / totale, 1));
//ds.Tables["torta"].Rows.Add(dsOriginal.Tables[2].Rows[k]["codFinalita"].ToString(), getTipologia(dsOriginal.Tables[2].Rows[k]["codFinalita"].ToString()), Helper.FormatDecimal((Convert.ToDecimal(dsOriginal.Tables[2].Rows[k]["totale"]) * 100 / totale).ToString(), 1));
}
// TOTALI PATRIMONIO - FOOTER
ds.Tables["patrimonioFooter"].Rows.Add("Totale", "" + Helper.FormatCurrency(totale.ToString()) + "", "100,0%");
var assetClass = datiSeiUnico.patrimonioUnit().patrimonioFinanziario.macroAssetClass.distribuzione.elencoSlice;
var displayInfo = datiSeiUnico.displayInfos().macroAssetDisplayInfos.ToList();
// CALCOLO PER COMPOSIZIONE PATRIMONIO
decimal nTotalePatrimonio = 0;
foreach (var itemDistribuzione in assetClass)
{
if (itemDistribuzione.sliceRappresentabile)
{
var percentuale = (itemDistribuzione.pesoCC) * 100;
nTotalePatrimonio = nTotalePatrimonio + Convert.ToDecimal(Helper.FormatDecimal(Convert.ToDecimal(percentuale).ToString(), 1));
}
}
bMax = false;
bMin = false;
if (nTotalePatrimonio > 100)
bMax = true;
else
{
if (nTotalePatrimonio < 100 && nTotalePatrimonio != 0)
bMin = true;
}
foreach (var itemDistribuzione in assetClass)
{
if (itemDistribuzione.sliceRappresentabile)
{
var mapDisplayInfo = displayInfo.FirstOrDefault(o => o.key.Equals(itemDistribuzione.codice)).value;
var ordinamento = mapDisplayInfo.order;
var controvalore = itemDistribuzione.ctvCC;
var percentuale = (itemDistribuzione.pesoCC) * 100;
if (bMax == true)
{
percentuale = percentuale - Convert.ToDecimal(0.1);
bMax=false;
}
else
{
if (bMin == true)
{
percentuale = percentuale + Convert.ToDecimal(0.1);
bMin=false;
}
}
totaleFinanziario += controvalore;
ds.Tables["composizionePatrimonio"].Rows.Add(itemDistribuzione.descrizione, Helper.FormatCurrency(controvalore.ToString()), Helper.FormatPercentage(Convert.ToDecimal(percentuale), 1), ordinamento);
}
}
//ds.Tables["composizionePatrimonioFooter"].Rows.Add("Totale", "" + Helper.FormatCurrency(totaleFinanziario.ToString()) + "", "100,0%");
if (datiSeiUnico.CASA_CCN != 0)
ds.Tables["composizionePatrimonioFooter"].Rows.Add("Totale" + (getNota4().Length > 0 ? " **" : "") + "", "" + Helper.FormatCurrency(totaleFinanziario.ToString()) + "", "100,0%");
else
ds.Tables["composizionePatrimonioFooter"].Rows.Add("Totale" + (getNota4().Length > 0 ? " *" : "") + "", "" + Helper.FormatCurrency(totaleFinanziario.ToString()) + "", "100,0%");
return ds;
}
public string getTipologia(string tipologia)
{
switch (tipologia)
{
case "U":
return "Immobili d'uso abitativo";
case "I":
return "Immobili d'investimento";
case "S":
return "Immobili strumentali";
case "NS":
return "Finalità non specificata";
default:
return "";
}
}
public ColorPDF getColor(string tipologia)
{
switch (tipologia)
{
case "Immobili d'uso abitativo":
return new ColorPDF(207, 220, 210);
case "Immobili d'investimento":
return new ColorPDF(115, 152, 109);
case "Immobili strumentali":
return new ColorPDF(167, 192, 168);
case "Finalità non specificata":
return new ColorPDF(245, 245, 220);
case "Patrimonio finanziario Fideuram":
return new ColorPDF(174, 150, 81);
case "Patrimonio finanziario altri Istituti":
return new ColorPDF(215, 206, 169);
default:
return new ColorPDF(255, 255, 255);
}
}
}
}