333 lines
16 KiB
C#
333 lines
16 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using Consulenza.ReportWriter.Business.OBJ_PDF;
|
|
using ceTe.DynamicPDF;
|
|
using Consulenza.ReportWriter.Business.CHART_PDF;
|
|
using Consulenza.ReportWriter.Business;
|
|
|
|
namespace Consulenza.ReportWriter.Manager.Section.Base.Proposta
|
|
{
|
|
public class P2 : Entity.Section
|
|
{
|
|
public P2(EnvironmentFacade environmentFacade, int idSection)
|
|
: base(environmentFacade, idSection)
|
|
{
|
|
try
|
|
{
|
|
Draw();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SectionLogger.Write("P2", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Disegna l'oggetto P2
|
|
/// </summary>
|
|
protected override sealed void Draw()
|
|
{
|
|
//Guida l'aumento di dimensione verticale della sezione delle torte:
|
|
const int deltaSommaPixelVerticale = 20;
|
|
|
|
var dsP2 = GetDataSet();
|
|
|
|
var dtTabellaRisorseFinanziarie = dsP2.Tables[0];
|
|
var dtTabellaPatrimonio = dsP2.Tables[1];
|
|
var dtTabellaNotaPresente = dsP2.Tables[2];
|
|
|
|
if (dtTabellaRisorseFinanziarie.Rows.Count <= 0) return;
|
|
|
|
var totaleControvaloreAttuale_RisorseFinanziarie = Convert.ToDecimal(dtTabellaRisorseFinanziarie.Compute("Sum(Ctv_Attuale)", string.Empty));
|
|
var totaleControvaloreProspettico_RisorseFinanziarie = Convert.ToDecimal(dtTabellaRisorseFinanziarie.Compute("Sum(Ctv_Prospettico)", string.Empty));
|
|
var totaleControvaloreAttuale_PatrimonioTotale = dtTabellaPatrimonio.Rows.Count > 0 ? totaleControvaloreAttuale_RisorseFinanziarie + Convert.ToDecimal(dtTabellaPatrimonio.Compute("Sum(Ctv_Attuale)", string.Empty)) : totaleControvaloreAttuale_RisorseFinanziarie;
|
|
var totaleControvaloreProspettico_PatrimonioTotale = dtTabellaPatrimonio.Rows.Count > 0 ? totaleControvaloreProspettico_RisorseFinanziarie + Convert.ToDecimal(dtTabellaPatrimonio.Compute("Sum(Ctv_Prospettico)", string.Empty)) : totaleControvaloreProspettico_RisorseFinanziarie;
|
|
|
|
bool visualizzareTabellaDelPatrimonioTotale = false;
|
|
|
|
if (dtTabellaPatrimonio.Rows.Count > 0)
|
|
{
|
|
if (!Convert.ToDecimal(dtTabellaPatrimonio.Compute("Sum(Ctv_Attuale)", string.Empty)).Equals(0) ||
|
|
!Convert.ToDecimal(dtTabellaPatrimonio.Compute("Sum(Ctv_Prospettico)", string.Empty)).Equals(0))
|
|
{
|
|
visualizzareTabellaDelPatrimonioTotale = true;
|
|
}
|
|
}
|
|
|
|
#region Tabella Risorse Finanziarie
|
|
|
|
var tabellaRisorseFinanziarie = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dtTabellaRisorseFinanziarie)
|
|
{
|
|
ShowBorderFooter = false,
|
|
ID = "Tabella_P2"
|
|
};
|
|
|
|
tabellaRisorseFinanziarie.Columns.Add(new ColumnPDF("ColoriMacroAsset", 23, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, string.Empty, string.Empty) { DeltaYContent = 5 });
|
|
tabellaRisorseFinanziarie.Columns.Add(new ColumnPDF("MacroAsset", 140, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "MacroAsset", "Macro asset class"));
|
|
tabellaRisorseFinanziarie.Columns.Add(new ColumnPDF("Ctv_Attuale", 150, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Ctv_Attuale", "Controvalore attuale (€)"));
|
|
tabellaRisorseFinanziarie.Columns.Add(new ColumnPDF("Ctv_Prospettico", 210, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Ctv_Prospettico", "Controvalore prospettico (€)"));
|
|
|
|
|
|
// Aggiungo i colori alla colonna ColoriMacroAsset
|
|
var indiceRiga = 0;
|
|
var percentualiControvaloreAttuale = new List<double>();
|
|
var percentualiControvaloreProspettico = new List<double>();
|
|
|
|
var serieCollezione = new List<Serie>
|
|
{
|
|
new Serie {Name = "TortaControvaloreAttuale"},
|
|
new Serie {Name = "TortaControvaloreProspettico"}
|
|
};
|
|
|
|
|
|
foreach (DataRow row in tabellaRisorseFinanziarie.DataSource.Rows)
|
|
{
|
|
var color = new ColorPDF(Convert.ToInt32(row["Red"]), Convert.ToInt32(row["Green"]), Convert.ToInt32(row["Blue"]));
|
|
tabellaRisorseFinanziarie.Cells[0, indiceRiga].ValueObject = new CirclePDF(10, 10, color);
|
|
indiceRiga++;
|
|
|
|
percentualiControvaloreAttuale.Add(Convert.ToDouble(row["Perc_Attuale"]));
|
|
percentualiControvaloreProspettico.Add(Convert.ToDouble(row["Perc_Prospettico"]));
|
|
|
|
//Serie Controvalore Attuale
|
|
serieCollezione[0].Points.Add(new Point
|
|
{
|
|
LabelAxisX = row["MacroAsset"].ToString(),
|
|
Color = color,
|
|
Value = Convert.ToDouble(row["Perc_Attuale"]),
|
|
ShowLabelAxisX = false,
|
|
ShowLabelAxisY = false
|
|
});
|
|
|
|
|
|
//Serie Controvalore Prospettico
|
|
serieCollezione[1].Points.Add(new Point
|
|
{
|
|
LabelAxisX = row["MacroAsset"].ToString(),
|
|
Color = color,
|
|
Value = Convert.ToDouble(row["Perc_Prospettico"]),
|
|
ShowLabelAxisX = false,
|
|
ShowLabelAxisY = false
|
|
});
|
|
|
|
}
|
|
|
|
// Footer
|
|
tabellaRisorseFinanziarie.FooterColumns.Add(new ColumnPDF("Totale Risorse Finanziarie", 163, HorizontalAlignmentType.Sinistra, false, true, 8, ColumnType.Testo));
|
|
tabellaRisorseFinanziarie.FooterColumns.Add(new ColumnPDF("Totale Controvalore Attuale", 150, HorizontalAlignmentType.Destra, false, true, 8, ColumnType.Decimale));
|
|
tabellaRisorseFinanziarie.FooterColumns.Add(new ColumnPDF("Totale Controvalore Prospettico", 210, HorizontalAlignmentType.Destra, false, true, 8, ColumnType.Decimale));
|
|
|
|
tabellaRisorseFinanziarie.FooterCells[0, 0].Value = visualizzareTabellaDelPatrimonioTotale ? "Totale risorse finanziarie" : "Totale patrimonio";
|
|
tabellaRisorseFinanziarie.FooterCells[1, 0].Value = totaleControvaloreAttuale_RisorseFinanziarie.ToString();
|
|
tabellaRisorseFinanziarie.FooterCells[2, 0].Value = totaleControvaloreProspettico_RisorseFinanziarie.ToString();
|
|
#endregion
|
|
|
|
#region Tabella Patrimonio
|
|
TablePDF tabellaPatrimonio = null;
|
|
|
|
if (visualizzareTabellaDelPatrimonioTotale)
|
|
{
|
|
tabellaPatrimonio = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dtTabellaPatrimonio);
|
|
tabellaPatrimonio.Columns.Add(new ColumnPDF("Descrizione", 163, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Descrizione", string.Empty));
|
|
tabellaPatrimonio.Columns.Add(new ColumnPDF("Ctv_Attuale", 150, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Ctv_Attuale", string.Empty));
|
|
tabellaPatrimonio.Columns.Add(new ColumnPDF("Ctv_Prospettico", 210, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Ctv_Prospettico", string.Empty));
|
|
tabellaPatrimonio.Header = false;
|
|
tabellaPatrimonio.ShowBorderFooter = false;
|
|
tabellaPatrimonio.ShowBorderHeader = false;
|
|
|
|
#region Nota del patrimonio non rappresentabile
|
|
|
|
var notaPatrimonioNonRappresentabile = new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, "Dettaglio riportato nel capitolo ''Patrimonio non rappresentabile''")
|
|
{
|
|
Width = 200,
|
|
AutoIncrementYWritable = false
|
|
};
|
|
|
|
#endregion
|
|
|
|
// Footer
|
|
tabellaPatrimonio.FooterColumns.Add(new ColumnPDF("Totale Patrimonio", 163, HorizontalAlignmentType.Sinistra, false, true, 8, ColumnType.Testo));
|
|
tabellaPatrimonio.FooterColumns.Add(new ColumnPDF("Totale Controvalore Attuale", 150, HorizontalAlignmentType.Destra, false, true, 8, ColumnType.Decimale));
|
|
tabellaPatrimonio.FooterColumns.Add(new ColumnPDF("Totale Controvalore Prospettico", 210, HorizontalAlignmentType.Destra, false, true, 8, ColumnType.Decimale));
|
|
|
|
tabellaPatrimonio.FooterCells[0, 0].Value = "Totale patrimonio";
|
|
tabellaPatrimonio.FooterCells[1, 0].Value = totaleControvaloreAttuale_PatrimonioTotale.ToString();
|
|
tabellaPatrimonio.FooterCells[2, 0].Value = totaleControvaloreProspettico_PatrimonioTotale.ToString();
|
|
|
|
//Check presenza nota di dettagliamento del Patrimonio Non Rappresentabile:
|
|
if (Convert.ToInt16(dtTabellaNotaPresente.Rows[0]["NotaPresente"]) > 0)
|
|
tabellaPatrimonio.Notes.Add(notaPatrimonioNonRappresentabile);
|
|
}
|
|
#endregion
|
|
|
|
#region Grafici a Torta
|
|
|
|
#region Cornice Sinistra
|
|
var bordoSinistro = new RectanglePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 180 - 90, 120 + deltaSommaPixelVerticale, 5, ColorPDF.ConsulenzaBase_Grigio_BordoColonnaHeaderFooterTabella)
|
|
{
|
|
AutoIncrementYWritable = false
|
|
};
|
|
|
|
var bordoSinistroBianco = new RectanglePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 181 - 90, 118 + deltaSommaPixelVerticale, 5, ColorPDF.Bianco)
|
|
{
|
|
AutoIncrementYWritable = false,
|
|
DeltaY = 1
|
|
};
|
|
|
|
#endregion
|
|
|
|
#region Grafico Controvalore Attuale
|
|
//var tortaControvaloreAttuale = new PiePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 186 - 30, 1F)
|
|
//{
|
|
// Width = 170,
|
|
// Height = 170,
|
|
// SeriesCollection = serieCollezione.FindAll(s => s.Name.Equals("TortaControvaloreAttuale"))
|
|
//};
|
|
var tortaControvaloreAttuale = new PiePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 186 - 80, 1F)
|
|
{
|
|
Width = 200,
|
|
Height = 200,
|
|
SeriesCollection = serieCollezione.FindAll(s => s.Name.Equals("TortaControvaloreAttuale")),
|
|
StartAngle = 0,
|
|
ShowLabelPoints = true,
|
|
Style3DEnabled = false,
|
|
AutoIncrementYWritable = true,
|
|
LabelDecimalDigitsCount = 1,
|
|
FontLabelSize = 5f,
|
|
CustomPlottingHeight = 50,
|
|
CustomPlottingWidth = 50,
|
|
CustomPlottingX = 25,
|
|
CustomPlottingY = 7,
|
|
UseCustomPlotting = true,
|
|
};
|
|
|
|
#endregion
|
|
|
|
#region Grafico Controvalore Prospettico
|
|
//var tortaControvaloreProspettico = new PiePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 356 - 30, 1F)
|
|
//{
|
|
// Width = 170,
|
|
// Height = 170,
|
|
// SeriesCollection = serieCollezione.FindAll(s => s.Name.Equals("TortaControvaloreProspettico"))
|
|
//};
|
|
var tortaControvaloreProspettico = new PiePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 356 - 70, 1F)
|
|
{
|
|
Width = 200,
|
|
Height = 200,
|
|
SeriesCollection = serieCollezione.FindAll(s => s.Name.Equals("TortaControvaloreProspettico")),
|
|
StartAngle = 0,
|
|
ShowLabelPoints = true,
|
|
Style3DEnabled = false,
|
|
AutoIncrementYWritable = true,
|
|
LabelDecimalDigitsCount = 1,
|
|
FontLabelSize = 5f,
|
|
CustomPlottingHeight = 50,
|
|
CustomPlottingWidth = 50,
|
|
CustomPlottingX = 25,
|
|
CustomPlottingY = 7,
|
|
UseCustomPlotting = true,
|
|
};
|
|
#endregion
|
|
|
|
#region Cornice Destra
|
|
var bordoDestro = new RectanglePDF(EnvironmentFacade.RendererFacade.XRightLimit - 5, 120 + deltaSommaPixelVerticale, 5, ColorPDF.ConsulenzaBase_Grigio_BordoColonnaHeaderFooterTabella)
|
|
{
|
|
AutoIncrementYWritable = false
|
|
};
|
|
|
|
var bordoDestroBianco = new RectanglePDF(EnvironmentFacade.RendererFacade.XRightLimit - 6, 118 + deltaSommaPixelVerticale, 5, ColorPDF.Bianco)
|
|
{
|
|
AutoIncrementYWritable = false,
|
|
DeltaY = 1
|
|
};
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region Rettangolo chiusura sezione
|
|
//Disegno un rettangolo in secondo piano che dia l'effetto cornice all'intestazione
|
|
var rectangleFooterBorder = new RectanglePDF(EnvironmentFacade.RendererFacade.XLeftLimit - 1, 10, 523, ColorPDF.ConsulenzaBase_Grigio_BordoColonnaHeaderFooterTabella)
|
|
{
|
|
DeltaY = 11,
|
|
AutoIncrementYWritable = false
|
|
};
|
|
|
|
// rettangolo contenitore grigio
|
|
var rectangleFooter = new RectanglePDF(EnvironmentFacade.RendererFacade.XLeftLimit, 20, 521, ColorPDF.ConsulenzaBase_Grigio_SfondoColonnaHeaderFooterTabella)
|
|
{
|
|
AutoIncrementYWritable = false
|
|
};
|
|
|
|
#endregion
|
|
|
|
AddElement(tabellaRisorseFinanziarie);
|
|
if (visualizzareTabellaDelPatrimonioTotale)
|
|
{
|
|
AddElement(tabellaPatrimonio);
|
|
}
|
|
AddElement(new SpacePDF(12));
|
|
|
|
if (serieCollezione.Count > 0)
|
|
{
|
|
AddElement(bordoSinistro);
|
|
AddElement(bordoSinistroBianco);
|
|
AddElement(tortaControvaloreAttuale);
|
|
AddElement(tortaControvaloreProspettico);
|
|
AddElement(bordoDestro);
|
|
AddElement(bordoDestroBianco);
|
|
}
|
|
|
|
//AddElement(new SpacePDF(125 + deltaSommaPixelVerticale));
|
|
AddElement(new SpacePDF(135 + deltaSommaPixelVerticale));
|
|
AddElement(rectangleFooterBorder);
|
|
AddElement(rectangleFooter);
|
|
AddElement(new SpacePDF(10));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Recupera i dati necessari alla Section restituendo un DataTable.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
protected sealed override DataTable GetDataTable()
|
|
{
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Recupera i dati necessari alla Section restituendo un DataSet.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
protected sealed override DataSet GetDataSet()
|
|
{
|
|
var parametri = new List<Parametro>();
|
|
|
|
#region Definizione dei parametri
|
|
|
|
var parametro = new Parametro
|
|
{
|
|
Direction = ParameterDirection.Input,
|
|
DbType = DbType.Int64,
|
|
ParameterName = "chiaveClientePB",
|
|
Value = EnvironmentFacade.ReportEnvironment.Cliente.Chiave
|
|
};
|
|
parametri.Add(parametro);
|
|
|
|
parametro = new Parametro
|
|
{
|
|
Direction = ParameterDirection.Input,
|
|
DbType = DbType.Int32,
|
|
ParameterName = "chiaveProposta",
|
|
Value = EnvironmentFacade.ReportEnvironment.Proposta.Chiave
|
|
};
|
|
parametri.Add(parametro);
|
|
|
|
#endregion
|
|
|
|
return EnvironmentFacade.ReportEnvironment.Proposta.PropostaCBUnica ? DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_Prop_P2", parametri)
|
|
: DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaBase, "REP_Prop_P2", parametri);
|
|
}
|
|
}
|
|
}
|