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);
}
}
///
/// Disegna l'oggetto P2
///
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();
var percentualiControvaloreProspettico = new List();
var serieCollezione = new List
{
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));
}
///
/// Recupera i dati necessari alla Section restituendo un DataTable.
///
///
protected sealed override DataTable GetDataTable()
{
return null;
}
///
/// Recupera i dati necessari alla Section restituendo un DataSet.
///
///
protected sealed override DataSet GetDataSet()
{
var parametri = new List();
#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);
}
}
}