973 lines
52 KiB
C#
Raw 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.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 Consulenza.ReportWriter.Business.Headers;
namespace Consulenza.ReportWriter.Manager.Section.Immobiliare.MonitoraggioNucleo
{
/// <summary>
/// Scheda 13
/// </summary>
public class S13 : Entity.Section
{
public S13(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S13", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
/// <summary>
/// Scheda2. Patrimonio immobiliare Sintesi (distribuzione del patrimonio complessivo del cliente diviso per tipologia e cointestatari)
/// </summary>
protected override void Draw()
{
var ds = GetDataSet();
#region Grafico torta
#region Valorizzazione Serie
var serieTorta = new List<Serie>();
foreach (var row in ds.Tables["sintesiTorta"].AsEnumerable())
{
serieTorta.Add(new Serie { Name = row["tipologia"].ToString() });
serieTorta[0].Points.Add(new Point
{
LabelAxisX = row["tipologia"].ToString(),
Value = Convert.ToDouble(row["peso"]),
Color = getColor(row["tipologia"].ToString()),
ShowLabelAxisX = false,
ShowLabelAxisY = false,
FontSizeLabelAxisX = 10,
FontSizeLabelAxisY = 10,
});
}
AddElement(new SpacePDF(90));
//var torta = new PiePDF(20 + 395, 0.8F)
//{
// Width = 340,
// Height = 340,
// SeriesCollection = serieTorta,
// StartAngle = 270,
// ShowLabelPoints = true,
// Style3DEnabled = false,
// AutoIncrementYWritable = true,
// LabelDecimalDigitsCount = 1,
// FontLabelSize = 4.5f,
// CustomPlottingHeight = 50,
// CustomPlottingWidth = 50,
// CustomPlottingX = 25,
// CustomPlottingY = 7,
// UseCustomPlotting = true
//};
//var torta = new PiePDF(48 + 395, 0.2F)
//var torta = new PiePDF(40 + 400, 0.2F)
var torta = new PiePDF(40 + 380, 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(5));
AddElement(torta);
#endregion
var tortaTitolo = new FormattedTextAreaPDF(string.Format("{0}", "Patrimonio immobiliare complessivo"), 85 + 405) { FontColor = new ColorPDF(91, 88, 79), FontSize = 10, FontBold = true, AutoIncrementYWritable = true };
AddElement(new SpacePDF(-7));
AddElement(tortaTitolo);
#endregion
var xLegenda = 135 + 395;
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);
AddElement(new SpacePDF(235));
foreach (var row in ds.Tables["sintesiTorta"].AsEnumerable())
{
switch (row["indice"].ToString())
{
case "U":
var legendaUsoAbitativoRettangolo = new RectanglePDF(xLegenda, 12, 17, coloriUsoAbitativo) { AutoIncrementYWritable = false };
var legendaUsoAbitativoTesto = new FormattedTextAreaPDF(string.Format("{0}", "Immobili d'uso abitativo"), xLegenda + 25) { FontSize = 7, AutoIncrementYWritable = true };
AddElement(legendaUsoAbitativoRettangolo);
AddElement(legendaUsoAbitativoTesto);
AddElement(new SpacePDF(10));
break;
case "S":
var legendaStrumentaleRettangolo = new RectanglePDF(xLegenda, 12, 17, coloriStrumentale) { AutoIncrementYWritable = false };
var legendaStrumentaleTesto = new FormattedTextAreaPDF(string.Format("{0}", "Immobili strumentali"), xLegenda + 25) { FontSize = 7, AutoIncrementYWritable = true };
AddElement(legendaStrumentaleRettangolo);
AddElement(legendaStrumentaleTesto);
AddElement(new SpacePDF(10));
break;
case "I":
var legendaInvestimentoRettangolo = new RectanglePDF(xLegenda, 12, 17, coloriInvestimento) { AutoIncrementYWritable = false };
var legendaInvestimentoTesto = new FormattedTextAreaPDF(string.Format("{0}", "Immobili d'investimento"), xLegenda + 25) { FontSize = 7, AutoIncrementYWritable = true };
AddElement(legendaInvestimentoRettangolo);
AddElement(legendaInvestimentoTesto);
AddElement(new SpacePDF(10));
break;
case "NS":
var legendaNonSpecificataRettangolo = new RectanglePDF(xLegenda, 12, 17, coloriNonSpecificata) { AutoIncrementYWritable = false };
var legendaNonSpecificataTesto = new FormattedTextAreaPDF(string.Format("{0}", "Finalità non specificata"), xLegenda + 25) { FontSize = 7, AutoIncrementYWritable = true };
AddElement(legendaNonSpecificataRettangolo);
AddElement(legendaNonSpecificataTesto);
break;
default:
break;
}
}
AddElement(new ResetterYPDF());
var table = new TablePDF(35, ds.Tables["sintesi"], ds.Tables["sintesiTotale"])
{
Style = Style.Immobiliare,
AlternateRow = false,
HeaderHeight = 25,
RowHeight = 10,
ShowBorderLastLine = false,
ShowBorderLastLineInPageBreak = false,
ShowBorderHeader = false,
//AdditionalSpaceBetweenHeadersAndTable = 5.0F,
HeaderTextVerticalAlign = VerticalAlignmentType.Basso,
AutoIncrementYWritable = false
};
table.Columns.Add(new ColumnPDF("tipologia", 105, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "tipologia", "Finalità/Tipologia") { HeaderFontSize = 7 });
table.Columns.Add(new ColumnPDF("numero", 40, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Testo, "numero", "Numero<br>immobili") { HeaderFontSize = 7 });
table.Columns.Add(new ColumnPDF("proquota", 100, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "proquota", "Valore stimato <br>nucleo (€)") { HeaderFontSize = 7 });
table.Columns.Add(new ColumnPDF("stimato", 100, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "stimato", "Valore stimato <br>totale (€)") { HeaderFontSize = 7 });
table.Columns.Add(new ColumnPDF("peso", 55, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "peso", "Peso (%)") { HeaderFontSize = 7 });
table.FooterColumns.Add(new ColumnPDF("tipologiaTotale", 105, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo));
table.FooterColumns.Add(new ColumnPDF("numeroTotale", 40, HorizontalAlignmentType.Centrato, false, true, 7, ColumnType.Testo));
table.FooterColumns.Add(new ColumnPDF("proquotaTotale", 100, HorizontalAlignmentType.Destra, false, true, 7, ColumnType.Testo));
table.FooterColumns.Add(new ColumnPDF("stimatoTotale", 100, HorizontalAlignmentType.Destra, false, true, 7, ColumnType.Testo));
table.FooterColumns.Add(new ColumnPDF("pesoTotale", 55, HorizontalAlignmentType.Destra, false, true, 7, ColumnType.Testo));
float startFrameX = table.X + table.Width + 10;
float startFrameY = 94;
//addFrame(startFrameX, startFrameX + 286, startFrameY, startFrameY + 350);
addFrame(startFrameX, startFrameX + 300, startFrameY, startFrameY + 340);
AddElement(new SpacePDF(50));
AddElement(new RepeaterPDF(new List<ObjectPDF>() { new SpacePDF(50) }));
AddElement(new FormattedTextAreaPDF(getTesto1(), 45, 700) { FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard, FontSize = 10, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left });
AddElement(new SpacePDF(15));
AddElement(table);
}
protected override DataSet GetDataSet()
{
#region Definizione dei parametri
var parametri = new List<Parametro>
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "chiaveNucleo",
Value = EnvironmentFacade.ReportEnvironment.Cliente.Chiave
}
};
#endregion
var dt = DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_ImmobiliareMonitoraggio_S13_MappaturaSintesi", parametri);
DataTable table = new DataTable();
table.Columns.Add("tipologia", typeof(string));
table.Columns.Add("numero", typeof(string));
table.Columns.Add("proquota", typeof(string));
table.Columns.Add("stimato", typeof(string));
table.Columns.Add("peso", typeof(string));
DataTable tableTotale = new DataTable();
tableTotale.Columns.Add("tipologiaTotale", typeof(string));
tableTotale.Columns.Add("numeroTotale", typeof(string));
tableTotale.Columns.Add("proquotaTotale", typeof(string));
tableTotale.Columns.Add("stimatoTotale", typeof(string));
tableTotale.Columns.Add("pesoTotale", typeof(string));
DataTable tableTorta = new DataTable();
tableTorta.Columns.Add("indice", typeof(string));
tableTorta.Columns.Add("tipologia", typeof(string));
tableTorta.Columns.Add("peso", typeof(decimal));
tableTorta.Columns.Add("ord1", typeof(int));
List<string> indiciPagina = dt.Tables[0].AsEnumerable()
.Select(z => z.Field<string>("usoTipologia")).Distinct().ToList();
#region Commento per TEST da copia Monitoraggio
#region Controllo Totale e Singoli
decimal nTipologiaGlobale = 0;
decimal nPesoGlobale = 0;
#region // Ciclo per riadattare Tabella
decimal nTipologia = 0;
decimal nPeso = 0;
#region // Primo Ciclo Calcolo Pesi Singoli
foreach (var indice in indiciPagina)
{
var tabellaIndice = dt.Tables[0].AsEnumerable().Where(z => z.Field<string>("usoTipologia").Equals(indice));
if (tabellaIndice != null)
{
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
nPeso = nPeso + ((decimal)row["peso"] * 100);
}
}
}
string sUpdate = "";
if (nPeso != 100)
{
var tabellaIndice = dt.Tables[0].AsEnumerable().Where(z => z.Field<string>("usoTipologia").Equals("NS"));
if (tabellaIndice.Count() > 0)
sUpdate = "NS";
else
{
tabellaIndice = dt.Tables[0].AsEnumerable().Where(z => z.Field<string>("usoTipologia").Equals("I"));
if (tabellaIndice.Count() > 0)
sUpdate = "I";
else
{
tabellaIndice = dt.Tables[0].AsEnumerable().Where(z => z.Field<string>("usoTipologia").Equals("S"));
if (tabellaIndice.Count() > 0)
sUpdate = "S";
else
sUpdate = "U";
}
}
tabellaIndice = dt.Tables[0].AsEnumerable().Where(z => z.Field<string>("usoTipologia").Equals(sUpdate));
if (nPeso < 100)
{
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
row["peso"] = (decimal)row["peso"] + ((100 - nPeso) / 100);
break;
}
}
else
{
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
row["peso"] = (decimal)row["peso"] - ((nPeso - 100) / 100);
break;
}
}
}
#endregion
foreach (var indice in indiciPagina)
{
nTipologia = 0;
nPeso = 0;
var tabellaIndice = dt.Tables[0].AsEnumerable().Where(z => z.Field<string>("usoTipologia").Equals(indice));
if (tabellaIndice != null)
{
nTipologia = (decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100;
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
nPeso = nPeso + ((decimal)row["peso"] * 100);
}
if (nTipologia != nPeso)
{
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
row["pesoTipologia"] = nPeso / 100;
}
}
}
}
// Fine Ciclo
#endregion
foreach (var row in dt.Tables[0].AsEnumerable())
{
nPesoGlobale = nPesoGlobale + (Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100);
}
foreach (var idx in indiciPagina)
{
var tabellaGlobale = dt.Tables[0].AsEnumerable().Where(z => z.Field<string>("usoTipologia").Equals(idx));
nTipologiaGlobale = nTipologiaGlobale + Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaGlobale.ToList()[0]["pesoTipologia"] * 100).ToString(), 1));
}
bool bTipologia = false;
bool bPeso = false;
//if (nPesoGlobale != 100)
// bPeso = true;
//else
//{
// if (nTipologiaGlobale != 100)
// bTipologia = true;
//}
if (nPesoGlobale != 100)
bPeso = true;
if (nTipologiaGlobale != 100)
bTipologia = true;
#endregion
#region Ciclo Totali = 100 e Singoli = 100
if (!bTipologia && !bPeso)
{
foreach (var indice in indiciPagina)
{
var tabellaIndice = dt.Tables[0].AsEnumerable().Where(z => z.Field<string>("usoTipologia").Equals(indice));
if (tabellaIndice != null)
{
table.Rows.Add(getTipologia(indice), "",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(tabellaIndice.ToList()[0]["pesoTipologia"].ToString(), 4)) * 100, 1) + "</B>");
tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100).ToString(), 1)), tabellaIndice.ToList()[0]["ord1"]);
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
}
}
}
}
#endregion
#region Ciclo Totali <> 100 e Singoli = 100
if (bTipologia && !bPeso)
{
foreach (var indice in indiciPagina)
{
var tabellaIndice = dt.Tables[0].AsEnumerable().Where(z => z.Field<string>("usoTipologia").Equals(indice));
if (tabellaIndice != null)
{
// Check su Totali
decimal nPesoTotal = Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100).ToString(), 1));
decimal nPesoSingle = 0;
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
nPesoSingle = nPesoSingle + (Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100);
}
// Fine Check
if (nPesoTotal == nPesoSingle)
{
table.Rows.Add(getTipologia(indice), "",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(tabellaIndice.ToList()[0]["pesoTipologia"].ToString(), 4)) * 100, 1) + "</B>");
tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100).ToString(), 1)), tabellaIndice.ToList()[0]["ord1"]);
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
}
}
else
{
if (nPesoTotal < nPesoSingle)
{
table.Rows.Add(getTipologia(indice), "",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal((Convert.ToDecimal(tabellaIndice.ToList()[0]["pesoTipologia"]) + Convert.ToDecimal("0,001")).ToString(), 4)) * 100, 1) + "</B>");
tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal((((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] + Convert.ToDecimal("0,001")) * 100).ToString(), 1)));
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
}
}
else
{
table.Rows.Add(getTipologia(indice), "",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal((Convert.ToDecimal(tabellaIndice.ToList()[0]["pesoTipologia"]) - Convert.ToDecimal("0,001")).ToString(), 4)) * 100, 1) + "</B>");
tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal((((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] - Convert.ToDecimal("0,001")) * 100).ToString(), 1)));
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
}
}
}
}
}
}
#endregion
#region Ciclo Totali = 100 e Singoli <> 100
if (!bTipologia && bPeso)
{
foreach (var indice in indiciPagina)
{
var tabellaIndice = dt.Tables[0].AsEnumerable().Where(z => z.Field<string>("usoTipologia").Equals(indice));
if (tabellaIndice != null)
{
// Check su Totali
decimal nPesoTotal = Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100).ToString(), 1));
decimal nPesoSingle = 0;
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
nPesoSingle = nPesoSingle + (Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100);
}
// Fine Check
if (nPesoTotal == nPesoSingle)
{
table.Rows.Add(getTipologia(indice), "",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(tabellaIndice.ToList()[0]["pesoTipologia"].ToString(), 4)) * 100, 1) + "</B>");
tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100).ToString(), 1)), tabellaIndice.ToList()[0]["ord1"]);
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
}
}
else
{
if (nPesoTotal < nPesoSingle)
{
table.Rows.Add(getTipologia(indice), "",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(tabellaIndice.ToList()[0]["pesoTipologia"].ToString(), 4)) * 100, 1) + "</B>");
tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100).ToString(), 1)), tabellaIndice.ToList()[0]["ord1"]);
Boolean bPass = false;
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
if (bPass)
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
else
{
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal((Convert.ToDecimal(row["peso"]) - Convert.ToDecimal("0,001")).ToString(), 4)) * 100, 1));
bPass = true;
}
}
}
else
{
table.Rows.Add(getTipologia(indice), "",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal((Convert.ToDecimal(tabellaIndice.ToList()[0]["pesoTipologia"])).ToString(), 4)) * 100, 1) + "</B>");
tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal((((decimal)tabellaIndice.ToList()[0]["pesoTipologia"]) * 100).ToString(), 1)), tabellaIndice.ToList()[0]["ord1"]);
Boolean bPass = false;
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
if (bPass)
{
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
}
else
{
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal((Convert.ToDecimal(row["peso"]) + Convert.ToDecimal("0,001")).ToString(), 4)) * 100, 1));
bPass = true;
}
}
}
}
}
}
}
#endregion
#region Ciclo Totali <> 100 e Singoli <> 100
if (bTipologia && bPeso)
{
foreach (var indice in indiciPagina)
{
var tabellaIndice = dt.Tables[0].AsEnumerable().Where(z => z.Field<string>("usoTipologia").Equals(indice));
if (tabellaIndice != null)
{
// Check su Totali
decimal nPesoTotal = Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100).ToString(), 1));
decimal nPesoSingle = 0;
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
nPesoSingle = nPesoSingle + (Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100);
}
// Fine Check
if (nPesoTotal == nPesoSingle)
{
table.Rows.Add(getTipologia(indice), "",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(tabellaIndice.ToList()[0]["pesoTipologia"].ToString(), 4)) * 100, 1) + "</B>");
tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100).ToString(), 1)), tabellaIndice.ToList()[0]["ord1"]);
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
}
}
else
{
if (nPesoTotal < nPesoSingle)
{
table.Rows.Add(getTipologia(indice), "",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(tabellaIndice.ToList()[0]["pesoTipologia"].ToString(), 4)) * 100, 1) + "</B>");
tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100).ToString(), 1)), tabellaIndice.ToList()[0]["ord1"]);
Boolean bPass = false;
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
if (bPass)
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
else
{
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal((Convert.ToDecimal(row["peso"]) - Convert.ToDecimal("0,001")).ToString(), 4)) * 100, 1));
bPass = true;
}
}
}
else
{
table.Rows.Add(getTipologia(indice), "",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
"<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal((Convert.ToDecimal(tabellaIndice.ToList()[0]["pesoTipologia"])).ToString(), 4)) * 100, 1) + "</B>");
tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal((((decimal)tabellaIndice.ToList()[0]["pesoTipologia"]) * 100).ToString(), 1)), tabellaIndice.ToList()[0]["ord1"]);
Boolean bPass = false;
foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
{
if (bPass)
{
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
}
else
{
table.Rows.Add(row["FinalitaTipologia"],
row["numImmobili"],
Helper.FormatCurrency(row["valProQuota"].ToString()),
Helper.FormatCurrency(row["valTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal((Convert.ToDecimal(row["peso"]) + Convert.ToDecimal("0,001")).ToString(), 4)) * 100, 1));
bPass = true;
}
}
}
}
}
}
}
#endregion
#endregion
#region Aggiunta da Monitoraggio
//foreach (var indice in indiciPagina)
//{
// var tabellaIndice = dt.Tables[0].AsEnumerable().Where(z => z.Field<string>("usoTipologia").Equals(indice));
// if (tabellaIndice != null)
// {
// // Check su Totali
// //decimal nPesoTotal = Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100).ToString(), 1));
// decimal nPesoTotal = Convert.ToDecimal(Helper.FormatDecimal(tabellaIndice.ToList()[0]["pesoTipologia"].ToString(), 4)) * 100;
// decimal nPesoSingle = 0;
// foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
// {
// nPesoSingle = nPesoSingle + (Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100);
// }
// // Fine Check
// if (nPesoTotal == nPesoSingle)
// {
// table.Rows.Add(getTipologia(indice), "",
// "<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
// "<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
// "<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(tabellaIndice.ToList()[0]["pesoTipologia"].ToString(), 4)) * 100, 1) + "</B>");
// tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100).ToString(), 1)), tabellaIndice.ToList()[0]["ord1"]);
// foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
// {
// table.Rows.Add(row["FinalitaTipologia"],
// row["numImmobili"],
// Helper.FormatCurrency(row["valProQuota"].ToString()),
// Helper.FormatCurrency(row["valTotale"].ToString()),
// Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
// }
// }
// else
// {
// if (nPesoTotal < nPesoSingle)
// {
// table.Rows.Add(getTipologia(indice), "",
// "<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
// "<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
// "<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(tabellaIndice.ToList()[0]["pesoTipologia"].ToString(), 4)) * 100, 1) + "</B>");
// tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100).ToString(), 1)), tabellaIndice.ToList()[0]["ord1"]);
// Boolean bPass = false;
// foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
// {
// if (bPass)
// table.Rows.Add(row["FinalitaTipologia"],
// row["numImmobili"],
// Helper.FormatCurrency(row["valProQuota"].ToString()),
// Helper.FormatCurrency(row["valTotale"].ToString()),
// Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
// else
// {
// table.Rows.Add(row["FinalitaTipologia"],
// row["numImmobili"],
// Helper.FormatCurrency(row["valProQuota"].ToString()),
// Helper.FormatCurrency(row["valTotale"].ToString()),
// Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal((Convert.ToDecimal(row["peso"]) - Convert.ToDecimal("0,001")).ToString(), 4)) * 100, 1));
// bPass = true;
// }
// }
// }
// else
// {
// // CODICE ES del 13.09.2017
// table.Rows.Add(getTipologia(indice), "",
// "<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
// "<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
// "<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal((Convert.ToDecimal(tabellaIndice.ToList()[0]["pesoTipologia"])).ToString(), 4)) * 100, 1) + "</B>");
// tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal((((decimal)tabellaIndice.ToList()[0]["pesoTipologia"]) * 100).ToString(), 1)), tabellaIndice.ToList()[0]["ord1"]);
// Boolean bPass = false;
// foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
// {
// if (bPass)
// {
// table.Rows.Add(row["FinalitaTipologia"],
// row["numImmobili"],
// Helper.FormatCurrency(row["valProQuota"].ToString()),
// Helper.FormatCurrency(row["valTotale"].ToString()),
// Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
// }
// else
// {
// table.Rows.Add(row["FinalitaTipologia"],
// row["numImmobili"],
// Helper.FormatCurrency(row["valProQuota"].ToString()),
// Helper.FormatCurrency(row["valTotale"].ToString()),
// Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal((Convert.ToDecimal(row["peso"]) + Convert.ToDecimal("0,001")).ToString(), 4)) * 100, 1));
// bPass = true;
// }
// }
// }
// }
// }
//}
#endregion
DataRow rowTotale = dt.Tables[0].Rows[0];
tableTotale.Rows.Add("Totale",
rowTotale["numImmobiliTotale"],
Helper.FormatCurrency(rowTotale["valProQuotaTotale"].ToString()),
Helper.FormatCurrency(rowTotale["valTotaleTotale"].ToString()),
Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(rowTotale["pesoTotale"].ToString(), 4)) * 100, 1));
DataSet ds = new DataSet();
table.TableName = "sintesi";
tableTotale.TableName = "sintesiTotale";
tableTorta.TableName = "sintesiTorta";
ds.Tables.Add(table);
ds.Tables.Add(tableTotale);
ds.Tables.Add(tableTorta);
return ds;
}
//protected override DataSet GetDataSet()
//{
// #region Definizione dei parametri
// var parametri = new List<Parametro>
// {
// new Parametro
// {
// Direction = ParameterDirection.Input,
// DbType = DbType.Int64,
// ParameterName = "chiaveNucleo",
// Value = EnvironmentFacade.ReportEnvironment.Cliente.Chiave
// }
// };
// #endregion
// var dt = DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_ImmobiliareMonitoraggio_S13_MappaturaSintesi", parametri);
// DataTable table = new DataTable();
// table.Columns.Add("tipologia", typeof(string));
// table.Columns.Add("numero", typeof(string));
// table.Columns.Add("proquota", typeof(string));
// table.Columns.Add("stimato", typeof(string));
// table.Columns.Add("peso", typeof(string));
// DataTable tableTotale = new DataTable();
// tableTotale.Columns.Add("tipologiaTotale", typeof(string));
// tableTotale.Columns.Add("numeroTotale", typeof(string));
// tableTotale.Columns.Add("proquotaTotale", typeof(string));
// tableTotale.Columns.Add("stimatoTotale", typeof(string));
// tableTotale.Columns.Add("pesoTotale", typeof(string));
// DataTable tableTorta = new DataTable();
// tableTorta.Columns.Add("indice", typeof(string));
// tableTorta.Columns.Add("tipologia", typeof(string));
// tableTorta.Columns.Add("peso", typeof(decimal));
// List<string> indiciPagina = dt.Tables[0].AsEnumerable()
// .Select(z => z.Field<string>("usoTipologia")).Distinct().ToList();
// foreach (var indice in indiciPagina)
// {
// var tabellaIndice = dt.Tables[0].AsEnumerable().Where(z => z.Field<string>("usoTipologia").Equals(indice));
// if (tabellaIndice != null)
// {
// table.Rows.Add(getTipologia(indice), "",
// "<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valProQuotaTipologia"].ToString()) + "</B>",
// "<B>" + Helper.FormatCurrency(tabellaIndice.ToList()[0]["valTotaleTipologia"].ToString()) + "</B>",
// "<B>" + Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(tabellaIndice.ToList()[0]["pesoTipologia"].ToString(), 4)) * 100, 1) + "</B>");
// tableTorta.Rows.Add(indice, getTipologia(indice), Convert.ToDecimal(Helper.FormatDecimal(((decimal)tabellaIndice.ToList()[0]["pesoTipologia"] * 100).ToString(), 1)));
// foreach (var row in tabellaIndice.OrderBy(z => z.Field<int>("ord2")))
// {
// table.Rows.Add(row["FinalitaTipologia"],
// row["numImmobili"],
// Helper.FormatCurrency(row["valProQuota"].ToString()),
// Helper.FormatCurrency(row["valTotale"].ToString()),
// Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(row["peso"].ToString(), 4)) * 100, 1));
// }
// }
// }
// DataRow rowTotale = dt.Tables[0].Rows[0];
// tableTotale.Rows.Add("Totale",
// rowTotale["numImmobiliTotale"],
// Helper.FormatCurrency(rowTotale["valProQuotaTotale"].ToString()),
// Helper.FormatCurrency(rowTotale["valTotaleTotale"].ToString()),
// Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(rowTotale["pesoTotale"].ToString(), 4)) * 100, 1));
// DataSet ds = new DataSet();
// table.TableName = "sintesi";
// tableTotale.TableName = "sintesiTotale";
// tableTorta.TableName = "sintesiTorta";
// ds.Tables.Add(table);
// ds.Tables.Add(tableTotale);
// ds.Tables.Add(tableTorta);
// return ds;
//}
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);
}
/// <summary>
/// Recupera i dati necessari alla Section restituendo un DataTable.
/// </summary>
/// <returns></returns>
protected override DataTable GetDataTable()
{
return null;
}
public string getTipologia(string tipologia)
{
switch (tipologia)
{
case "U":
return "<B>Uso abitativo</B>";
case "I":
return "<B>Investimento</B>";
case "S":
return "<B>Strumentale</B>";
case "NS":
return "<B>Non specificata</B>";
default:
return "";
}
}
public string getTesto1()
{
return "Di seguito si rappresenta la distribuzione del patrimonio immobiliare in base alla finalità con cui l'immobile è detenuto.";
}
public ColorPDF getColor(string tipologia)
{
switch (tipologia)
{
case "<B>Uso abitativo</B>":
return new ColorPDF(207, 220, 210);
case "<B>Investimento</B>":
return new ColorPDF(115, 152, 109);
case "<B>Strumentale</B>":
return new ColorPDF(167, 192, 168);
case "<B>Non specificata</B>":
return new ColorPDF(245, 245, 220);
default:
return null;
}
}
}
}