313 lines
16 KiB
C#
Raw Permalink 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.Collections.Generic;
using System.Linq;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;
using ceTe.DynamicPDF;
using Consulenza.ReportWriter.Business.CHART_PDF;
using Consulenza.ReportCommon;
namespace Consulenza.ReportWriter.Manager.Section.Immobiliare.Finalita
{
/// <summary>
/// Patrimonio Immobiliare Sintesi (id 141)
/// </summary>
public class S2 : Entity.Section
{
public S2(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S2", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
/// <summary>
/// Scheda2. Patrimonio immobiliare Sintesi (distribuzione del patrimonio complessivo del cliente diviso per finalità e cointestatari)
/// </summary>
protected override sealed void Draw()
{
var dati = GetDataSet();
if (dati.Tables[0].Rows.Count == 0) return;
var serieCollezione = new List<Serie>();
#region Distribuzione per tipologia
AddElement(new SpacePDF(30));
var icona = new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit, 0.20F, "DistrFabbricati.png") { AutoIncrementYWritable = false };
var titolo = new FormattedTextAreaPDF("Distribuzione per finalità", 82) { FontSize = 14, FontColor = ColorPDF.Immobiliare_Grigio_TitoloGrande };
#region Tabella
var tabella = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 30, dati.Tables[0])
{
Style = Style.Immobiliare,
HeaderMargin = 8
};
tabella.Columns.Add(new ColumnPDF("descrizione", 100, HorizontalAlignmentType.Sinistra, false, false, 8, ColumnType.Testo, "descrizione", "Finalità"));
tabella.Columns.Add(new ColumnPDF("immobili", 50, HorizontalAlignmentType.Centrato, false, false, 8, ColumnType.Intero, "numeroimmobili", "Numero<BR>immobili"));
tabella.Columns.Add(new ColumnPDF("stimatoproprieta", 100, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Decimale, "valorestimatoproprieta", "Valore stimato<BR>quota di proprietà (€)"));
tabella.Columns.Add(new ColumnPDF("stimatototale", 80, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Decimale, "valorestimatototale", "Valore stimato<BR>totale (€)"));
tabella.FooterColumns.Add(new ColumnPDF("descrizione", 100, HorizontalAlignmentType.Sinistra, false, true, 8, ColumnType.Testo));
tabella.FooterColumns.Add(new ColumnPDF("immobili", 50, HorizontalAlignmentType.Centrato, false, true, 8, ColumnType.Intero));
tabella.FooterColumns.Add(new ColumnPDF("stimatoproprieta", 100, HorizontalAlignmentType.Destra, false, true, 8, ColumnType.Decimale));
tabella.FooterColumns.Add(new ColumnPDF("stimatototale", 80, HorizontalAlignmentType.Destra, false, true, 8, ColumnType.Decimale));
tabella.FooterCells[0, 0].Value = "Totale";
tabella.FooterCells[1, 0].Value = Convert.ToDecimal(dati.Tables[0].Compute("Sum(numeroimmobili)", string.Empty)).ToString();
tabella.FooterCells[2, 0].Value = Convert.ToDecimal(dati.Tables[0].Compute("Sum(valorestimatoproprieta)", string.Empty)).ToString();
tabella.FooterCells[3, 0].Value = Convert.ToDecimal(dati.Tables[0].Compute("Sum(valorestimatototale)", string.Empty)).ToString();
#endregion
AddElement(icona);
AddElement(titolo);
AddElement(new SpacePDF(30));
AddElement(tabella);
#endregion
#region Linea verticale
var xLinea = (EnvironmentFacade.RendererFacade.XRightLimit / 2) + 40;
var y1Linea = EnvironmentFacade.RendererFacade.YUpperLimit + 50;
var y2Linea = y1Linea + 170;
var lineaVerticaleSeparazione = new LinePDF(xLinea, y1Linea, xLinea, y2Linea, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false };
AddElement(lineaVerticaleSeparazione);
#endregion
#region Grafico a torta
#region Valorizzazione Serie
var totaleValoreStimatoUsoAbitativo = dati.Tables[0].Select("codFinalita = 'U'").Length == 0 ? 0 : Convert.ToDecimal(dati.Tables[0].Select("codFinalita = 'U'").FirstOrDefault()["ValoreStimatoTotale"]);
var totaleValoreStimatoStrumentale = dati.Tables[0].Select("codFinalita = 'S'").Length == 0 ? 0 : Convert.ToDecimal(dati.Tables[0].Select("codFinalita = 'S'").FirstOrDefault()["ValoreStimatoTotale"]);
var totaleValoreStimatoInvestimento = dati.Tables[0].Select("codFinalita = 'I'").Length == 0 ? 0 : Convert.ToDecimal(dati.Tables[0].Select("codFinalita = 'I'").FirstOrDefault()["ValoreStimatoTotale"]);
var totaleValoreStimatoNonSpecificata = dati.Tables[0].Select("codFinalita = 'NS'").Length == 0 ? 0 : Convert.ToDecimal(dati.Tables[0].Select("codFinalita = 'NS'").FirstOrDefault()["ValoreStimatoTotale"]);
ColorPDF coloriUsoAbitativo = totaleValoreStimatoUsoAbitativo > 0 ? new ColorPDF(Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'U'").FirstOrDefault()["Red"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'U'").FirstOrDefault()["Green"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'U'").FirstOrDefault()["Blue"])) : null;
ColorPDF coloriStrumentale = totaleValoreStimatoStrumentale > 0 ? new ColorPDF(Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'S'").FirstOrDefault()["Red"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'S'").FirstOrDefault()["Green"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'S'").FirstOrDefault()["Blue"])) : null;
ColorPDF coloriInvestimento = totaleValoreStimatoInvestimento > 0 ? new ColorPDF(Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'I'").FirstOrDefault()["Red"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'I'").FirstOrDefault()["Green"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'I'").FirstOrDefault()["Blue"])) : null;
ColorPDF coloriNonSpecificata = totaleValoreStimatoNonSpecificata > 0 ? new ColorPDF(Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'NS'").FirstOrDefault()["Red"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'NS'").FirstOrDefault()["Green"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'NS'").FirstOrDefault()["Blue"])) : null;
serieCollezione.Add(new Serie { Name = "DistribuzioneFinalita" });
foreach (DataRow item in dati.Tables[0].Rows)
{
serieCollezione[0].Points.Add(new Point
{
LabelAxisX = item["Descrizione"].ToString(),
Color = new ColorPDF(Convert.ToInt32(item["Red"]), Convert.ToInt32(item["Green"]), Convert.ToInt32(item["Blue"])),
Value = Convert.ToDouble(item["PercentualeValoreStimato"]) == 0 ? 0.01 : Convert.ToDouble(item["PercentualeValoreStimato"]),
ShowLabelAxisX = false,
ShowLabelAxisY = false
});
}
#endregion
var intestazione = new FormattedTextAreaPDF(string.Format("{0} {1}", "Valore stimato totale:", Helper.FormatCurrencyWithSymbol(Convert.ToDecimal(dati.Tables[0].Compute("Sum(valorestimatototale)", string.Empty)).ToString())),
xLinea,
EnvironmentFacade.RendererFacade.XRightLimit - xLinea,
TextAlign.Center) { FontSize = 8, FontBold = true };
var torta = new PiePDF(xLinea + 130, 1F, y1Linea + 10)
{
ShowLabelPoints = false,
Height = 150,
Width = 150,
StartAngle = 90,
SeriesCollection = serieCollezione
};
AddElement(new ResetterYPDF(y1Linea));
AddElement(intestazione);
AddElement(torta);
AddElement(new SpacePDF(150));
var xLegenda = xLinea + 20;
if (totaleValoreStimatoUsoAbitativo > 0)
{
var legendaUsoAbitativoRettangolo = new RectanglePDF(xLegenda, 8, 17, coloriUsoAbitativo) { AutoIncrementYWritable = false };
var legendaUsoAbitativoTesto = new FormattedTextAreaPDF(string.Format("{0}<BR>{1}", "Uso Abitativo", Helper.FormatCurrencyWithSymbol(totaleValoreStimatoUsoAbitativo.ToString())), xLegenda + 20) { FontSize = 8, AutoIncrementYWritable = false };
xLegenda += 85;
AddElement(legendaUsoAbitativoRettangolo);
AddElement(legendaUsoAbitativoTesto);
}
if (totaleValoreStimatoStrumentale > 0)
{
var legendaStrumentaleRettangolo = new RectanglePDF(xLegenda, 8, 17, coloriStrumentale) { AutoIncrementYWritable = false };
var legendaStrumentaleTesto = new FormattedTextAreaPDF(string.Format("{0}<BR>{1}", "Strumentale", Helper.FormatCurrencyWithSymbol(totaleValoreStimatoStrumentale.ToString())), xLegenda + 20) { FontSize = 8, AutoIncrementYWritable = false };
xLegenda += 85;
AddElement(legendaStrumentaleRettangolo);
AddElement(legendaStrumentaleTesto);
}
if (totaleValoreStimatoInvestimento > 0)
{
var legendaInvestimentoRettangolo = new RectanglePDF(xLegenda, 8, 17, coloriInvestimento) { AutoIncrementYWritable = false };
var legendaInvestimentoTesto = new FormattedTextAreaPDF(string.Format("{0}<BR>{1}", "Investimento", Helper.FormatCurrencyWithSymbol(totaleValoreStimatoInvestimento.ToString())), xLegenda + 20) { FontSize = 8, AutoIncrementYWritable = false };
xLegenda += 85;
AddElement(legendaInvestimentoRettangolo);
AddElement(legendaInvestimentoTesto);
}
if (totaleValoreStimatoNonSpecificata > 0)
{
var legendaNonSpecificataRettangolo = new RectanglePDF(xLegenda, 8, 17, coloriNonSpecificata) { AutoIncrementYWritable = false };
var legendaNonSpecificataTesto = new FormattedTextAreaPDF(string.Format("{0}<BR>{1}", "Non specificata", Helper.FormatCurrencyWithSymbol(totaleValoreStimatoNonSpecificata.ToString())), xLegenda + 20) { FontSize = 8, AutoIncrementYWritable = false };
xLegenda += 85;
AddElement(legendaNonSpecificataRettangolo);
AddElement(legendaNonSpecificataTesto);
}
#endregion
//---------------------------------//
#region Linea orizzontale
var lineaOrizzonataleSeparazione = new LinePDF(EnvironmentFacade.RendererFacade.XLeftLimit, EnvironmentFacade.RendererFacade.XRightLimit, 1F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo);
AddElement(new SpacePDF(40));
AddElement(lineaOrizzonataleSeparazione);
#endregion
//---------------------------------//
#region Distribuzione per tipologia
AddElement(new SpacePDF(30));
icona = new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit, 0.20F, "DistrFabbricati.png") { AutoIncrementYWritable = false };
titolo = new FormattedTextAreaPDF("Distribuzione della proprietà degli immobili", 82) { FontSize = 14, FontColor = ColorPDF.Immobiliare_Grigio_TitoloGrande };
#region Tabella
tabella = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 30, dati.Tables[1])
{
Style = Style.Immobiliare,
Footer = false,
ShowBorderLastLine = true,
HeaderMargin = 8
};
tabella.Columns.Add(new ColumnPDF("nominativo", 205, HorizontalAlignmentType.Sinistra, false, false, 8, ColumnType.Testo, "nominativo", "Nominativo"));
tabella.Columns.Add(new ColumnPDF("stimatoproprieta", 110, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Decimale, "valorestimatoproprieta", "Valore stimato<BR>quota di proprietà (€)"));
//tabella.FooterColumns.Add(new ColumnPDF("nominativo", 205, HorizontalAlignmentType.SINISTRA, false, true, 8, ColumnType.TESTO));
//tabella.FooterColumns.Add(new ColumnPDF("stimatoproprieta", 110, HorizontalAlignmentType.DESTRA, false, true, 8, ColumnType.DECIMALE));
//tabella.FooterCell[0].Value = "Totale";
//tabella.FooterCell[1].Value = Convert.ToDecimal(dati.Tables[1].Compute("Sum(ValoreStimatoProprieta)", string.Empty)).ToString();
#endregion
AddElement(icona);
AddElement(titolo);
AddElement(new SpacePDF(10));
AddElement(tabella);
#endregion
#region Linea verticale
xLinea = (EnvironmentFacade.RendererFacade.XRightLimit / 2) + 40;
y1Linea = EnvironmentFacade.RendererFacade.YUpperLimit + 290;
y2Linea = y1Linea + 170;
lineaVerticaleSeparazione = new LinePDF(xLinea, y1Linea, xLinea, y2Linea, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false };
AddElement(lineaVerticaleSeparazione);
#endregion
#region Grafico
var datiGrafico = dati.Tables[1];
var xGrafico = xLinea + 20;
var graficoBarre = new StackedPDF(xGrafico, 1F) { HeightSingleBar = 16, Width = 300,MarginAxisYFromTop=0,MarginAxisY=7 };
serieCollezione = new List<Serie> { new Serie { Name = "DistribuzioneFinalita" } };
foreach (DataRow item in datiGrafico.Rows)
{
serieCollezione[0].Points.Add(new Point
{
LabelAxisY = item["Nominativo"].ToString(),
Color = new ColorPDF(Convert.ToInt32(item["Red"]), Convert.ToInt32(item["Green"]), Convert.ToInt32(item["Blue"])),
Value = Convert.ToDouble(item["ValoreStimatoProprieta"]),
ShowLabelAxisY = true
});
}
graficoBarre.SeriesCollection = serieCollezione;
AddElement(new ResetterYPDF(y1Linea + 50));
AddElement(graficoBarre);
#endregion
}
/// <summary>
/// Recupera i dati necessari alla Section restituendo un DataTable.
/// </summary>
/// <returns></returns>
protected override DataTable GetDataTable()
{
return null;
}
/// <summary>
/// Recupera i dati necessari alla Section restituendo un DataSet.
/// </summary>
/// <returns></returns>
protected override DataSet GetDataSet()
{
#region Definizione dei parametri
var parametri = new List<Parametro>
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "ChiaveClientePB",
Value = EnvironmentFacade.ReportEnvironment.Cliente.Chiave
}
};
#endregion
var dt = new DataSet();
dt = EnvironmentFacade.ReportEnvironment.FinalitaImmobiliare.ImmobiliareCEUnica ? DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_FinalitaImmobiliare_S2_Sintesi", parametri)
: DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaEvoluta, "REP_FinalitaImmobiliare_S2_Sintesi", parametri);
return dt;
}
}
}