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; using System.Reflection; using System.ComponentModel; using System.Configuration; namespace Consulenza.ReportWriter.Manager.Section.Immobiliare.Monitoraggio { /// /// Scheda 21 /// public class S21 : Entity.Section { public S21(EnvironmentFacade environmentFacade, int idSection) : base(environmentFacade, idSection) { try { Draw(); } catch (Exception ex) { SectionLogger.Write("S21", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment); } } /// /// Scheda2. Patrimonio immobiliare –Sintesi (distribuzione del patrimonio complessivo del cliente diviso per tipologia e cointestatari) /// protected override sealed void Draw() { var dataset = GetDataSet(); if (dataset == null) return; FormattedTextAreaPDF testoPagina = null; FormattedTextAreaPDF notaTabella = null; DataTable table = dataset.Tables[0]; if (table != null && table.Rows.Count > 0) { testoPagina = new FormattedTextAreaPDF(getTesto1(), 35) { FontSize = 10, FontColor = ColorPDF.Immobiliare_Grigio_TitoloPiccolo, AutoIncrementYWritable = true, Width = 740 }; notaTabella = new FormattedTextAreaPDF("Nota(*): Il \"Reddito dominicale\" dei terreni è esposto nella colonna \"Rendita catastale\".
", 60, 680) { AutoIncrementYWritable = false, Y = EnvironmentFacade.RendererFacade.YLowerLimit - 23, FontSize = 6, FontColor = ColorPDF.Nero, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, DeltaX = 5, DeltaY = 5 }; var listaOggettiDaRipetere = new List { new SpacePDF(30), testoPagina, new SpacePDF(25), notaTabella }; AddElement(listaOggettiDaRipetere); AddElement(new RepeaterPDF(listaOggettiDaRipetere)); TablePDF tablePDF = new TablePDF(35, table) { Style = Style.Immobiliare, AlternateRow = false, HeaderHeight = 25, Footer = false, PageBreak = true, ShowBorderLastLine = true, DrawLineHeaderUP = false, HeaderTextDrawJustOnce = false, }; var lineaVerticaleSeparazione = new LinePDF(tablePDF.X, tablePDF.X + 720, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false, DeltaY = -15 }; tablePDF.HeaderNoteObjects.Add(lineaVerticaleSeparazione); tablePDF.HeaderNoteObjects.Add(new FormattedTextAreaPDF("Semestre precedente", tablePDF.X + 445, 105) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center, FontBold = true, DeltaY = - 10, AutoIncrementYWritable = false, }); tablePDF.HeaderNoteObjects.Add(new LinePDF(tablePDF.X + 445, tablePDF.X + 555) { DeltaY = 2, AutoIncrementYWritable = false, Color = new ColorPDF(0,0,0)}); tablePDF.HeaderNoteObjects.Add(new FormattedTextAreaPDF("Semestre attuale", tablePDF.X + 600, 120) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center, FontBold = true, DeltaY = -10, AutoIncrementYWritable = false, }); tablePDF.HeaderNoteObjects.Add(new LinePDF(tablePDF.X + 600, tablePDF.X + 720) { DeltaY = 2, AutoIncrementYWritable = false, Color = new ColorPDF(0, 0, 0) }); tablePDF.Columns.Add(new ColumnPDF("descrizione", 300, HorizontalAlignmentType.Sinistra, false, false, 8, ColumnType.Testo, "colonnaImmobili", "Immobili") { FontBold = false, HeaderFontBold = true, HeaderFontSize = 7, DeltaYContent = 2 }); tablePDF.Columns.Add(new ColumnPDF("renditacatastale", 100, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Testo, "rendita", "Rendita catastale*") { FontBold = false, HeaderFontBold = true, HeaderFontSize = 7, DeltaYContent = 2 }); tablePDF.Columns.Add(new ColumnPDF("tipologiaprecedente", 100, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Testo, "Tipologiastorico", "Tipologia diritto") { FontBold = false, HeaderFontBold = true, HeaderFontSize = 7, DeltaYContent = 2 }); tablePDF.Columns.Add(new ColumnPDF("quotaprecedente", 60, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Testo, "quotaStorico", "Quota") { FontBold = false, HeaderFontBold = true, HeaderFontSize = 7, DeltaYContent = 2 }); tablePDF.Columns.Add(new ColumnPDF("tipologiaattuale", 100, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Testo, "tipologiaAttuale", "Tipologia diritto") { FontBold = false, HeaderFontBold = true, HeaderFontSize = 7, DeltaYContent = 2 }); tablePDF.Columns.Add(new ColumnPDF("quotaattuale", 60, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Testo, "quotaAttuale", "Quota") { FontBold = false, HeaderFontBold = true, HeaderFontSize = 7, DeltaYContent = 2 }); for (int k = 0; k < table.Rows.Count; k++) { //tablePDF.Cells[3, k].Value = Helper.FormatPercentage(Convert.ToDecimal(table.Rows[k].Field("quotaStorico")) * 100, 1); //tablePDF.Cells[5, k].Value = Helper.FormatPercentage(Convert.ToDecimal(table.Rows[k].Field("quotaAttuale")) * 100, 1); tablePDF.Cells[3, k].Value = Helper.FormatPercentage(Convert.ToDecimal(table.Rows[k].Field("quotaStorico")), 1); tablePDF.Cells[5, k].Value = Helper.FormatPercentage(Convert.ToDecimal(table.Rows[k].Field("quotaAttuale")), 1); if (table.Rows[k].Field("rendita").Equals("") || Convert.ToDecimal(table.Rows[k].Field("rendita")) == 0) tablePDF.Cells[1, k].Value = "-"; else tablePDF.Cells[1, k].Value = Helper.FormatCurrency(Convert.ToDecimal(table.Rows[k].Field("rendita")).ToString()); } DataTable header = new DataTable(); header.Columns.Add("space"); header.Columns.Add("semestrePrecedente"); header.Columns.Add("semestreAttuale"); header.Rows.Add("", "Semestre precedente", "Semestre attuale"); var tableHeader = new TablePDF(35, header) { Style = Style.Immobiliare, AlternateRow = false, Header = false, Footer = false, ShowBorderLastLine = false, DrawLineHeaderUP = false, HideFirstSeparationLine = true, IndexesOfRowLinesToIgnoreSeparators = new List() { 1 } }; tableHeader.Columns.Add(new ColumnPDF("space", tablePDF.Columns[0].Width + tablePDF.Columns[1].Width + 20, HorizontalAlignmentType.Centrato, false, true, 8, ColumnType.Testo, "space", "") { DeltaYContent = 2 }); tableHeader.Columns.Add(new ColumnPDF("semestrePrecedente", tablePDF.Columns[2].Width + tablePDF.Columns[3].Width - 10, HorizontalAlignmentType.Centrato, false, true, 8, ColumnType.Testo, "semestrePrecedente", "") { DeltaYContent = 2, PaddingLeft = 10 }); tableHeader.Columns.Add(new ColumnPDF("semestreAttuale", tablePDF.Columns[4].Width + tablePDF.Columns[5].Width - 10, HorizontalAlignmentType.Centrato, false, true, 8, ColumnType.Testo, "semestreAttuale", "") { DeltaYContent = 2, PaddingLeft = 10 }); //AddElement(lineaVerticaleSeparazione); //AddElement(tableHeader); AddElement(tablePDF); } } public string getTesto1() { return "Di seguito si rappresenta l'elenco degli immobili per i quali, rispetto al semestre precedente, sono intervenute " + "variazioni nelle quote o nelle tipologie di diritto registrate all'Agenzia delle Entrate. Sono esclusi dalla rappresentazione gli immobili con anomalie catastali."; } /// /// Recupera i dati necessari alla Section restituendo un DataTable. /// /// protected override DataTable GetDataTable() { return null; } /// /// Recupera i dati necessari alla Section restituendo un DataSet. /// /// protected override DataSet GetDataSet() { DataSet data = new DataSet(); data.Tables.Add(new DataTable("quote")); // U #region Definizione dei parametri var parametri = new List { new Parametro { Direction = ParameterDirection.Input, DbType = DbType.Int64, ParameterName = "ChiaveClientePB", Value = EnvironmentFacade.ReportEnvironment.Cliente.Chiave } }; #endregion var dsOriginal = DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_ImmobiliareMonitoraggio_S_ImmobiliStoricoDirittoQuote", parametri); if (dsOriginal.Tables[0].Rows.Count == 0) return null; /************************* FIX Quote Variate - Pino *************************/ DataSet _data = GetQuoteVariate(dsOriginal); if (_data.Tables[0].Rows.Count == 0) return null; /****************************************************************************/ //DataTable dtCloned = dsOriginal.Tables[0].Clone(); //dtCloned.Columns[0].DataType = typeof(Int32); //for (int i = 0; i < dsOriginal.Tables[0].Columns.Count; i++) // dtCloned.Columns[i].DataType = typeof(string); //for (int row = 0; row < dsOriginal.Tables[0].Rows.Count; row++) //{ // object[] array = new object[dsOriginal.Tables[0].Columns.Count]; // for (int column = 0; column < dsOriginal.Tables[0].Columns.Count; column++) // array[column] = dsOriginal.Tables[0].Rows[row][column].ToString(); // dtCloned.Rows.Add(array); //} //data.Tables["quote"].Merge(dtCloned); data.Tables["quote"].Merge(_data.Tables[0]); return data; } // Da qui comincia la fix per quote variate #region Fix Quote Variate 16/07/2020 - Pino private DataSet GetQuoteVariate(DataSet _ds) { DataSet data = new DataSet(); List ListaQuote = new List(); string oldImmobile = string.Empty; try { /* Recupero tutti gli immobili per l'utente */ List _listaMaster = ConvertTo(_ds.Tables[0]); //List _listaMaster = ConvertTo(_dtOrd); // Recupero il Dettaglio per l'Attuale var listaTotale = SetDetail(_listaMaster, "A"); /* Recupero tutti gli immobili per l'utente con riferimento all'ultima semestrale */ DataTable _dtST = GetDatiQuoteStorici(EnvironmentFacade.ReportEnvironment.Cliente.Chiave.ToString()); List _listaMasterST = ConvertTo(_dtST); // Recupero il Dettaglio per la Precedente var listaTotaleST = SetDetail(_listaMasterST, "P"); #region match tra le due liste // Recupero gli elementi non presenti nel semestre precedente var firstNotSecond = listaTotale.Where(f => f.dtStimaOMI == string.Empty || f.dtStimaOMI == null).ToList(); // Ciclo sulla lista del semestre precedente e verifico se vi sono differenze tra diritti/quote Precedenti e diritti/quote Attuali foreach (var itemSemPrec in listaTotaleST) { Quote cls = null; bool isEliminare = VerificaVariazioni(listaTotale, itemSemPrec); foreach (var item in itemSemPrec._listaDetailQuote) { cls = new Quote(); if (itemSemPrec.colonnaImmobili != oldImmobile) { cls.idImmobileCatasto = itemSemPrec.IdImmobileCatasto; cls.chiaveClientePB = Convert.ToString(itemSemPrec.chiaveClientePB); cls.chiaveProdottiTerzi = Convert.ToString(itemSemPrec.chiaveProdottoTerzi); cls.colonnaImmobili = itemSemPrec.colonnaImmobili; cls.renditaCatastale = Convert.ToString(itemSemPrec.renditaCatastale); cls.redditoAgrario = Convert.ToString(itemSemPrec.redditoAgrario); cls.tipoImmobile = itemSemPrec.TipoImmobile; cls.rendita = Convert.ToString((itemSemPrec.rendita == null ? string.Empty : itemSemPrec.rendita)); cls.descrizione = itemSemPrec.colonnaImmobili; cls.comune = itemSemPrec.comune; cls.valoreImmobileTotale = itemSemPrec.valoreImmobileTotale; } cls.Tipologiastorico = item.TipologiaDirittoST; cls.QuotaStorico = Convert.ToString(item.QuoteDirittoST); MasterQuote _semAtt = listaTotale.Where(f => f.chiaveProdottoTerzi == itemSemPrec.chiaveProdottoTerzi).Select(s => s).FirstOrDefault(); string _dirittiAtt = _semAtt._listaDetailQuote.Select(s => s.TipologiaDirittoATT).FirstOrDefault(); decimal _quoteAtt = _semAtt._listaDetailQuote.Select(s => s.QuoteDirittoATT).FirstOrDefault(); //string _dirittiAtt = _semAtt._listaDetailQuote.Where(f => f.TipologiaDirittoATT == item.TipologiaDirittoST).Select(s => s.TipologiaDirittoATT).FirstOrDefault(); //decimal _quoteAtt = _semAtt._listaDetailQuote.Where(f => f.QuoteDirittoATT == item.QuoteDirittoST).Select(s => s.QuoteDirittoATT).FirstOrDefault(); cls.tipologiaAttuale = _dirittiAtt; cls.quotaAttuale = Convert.ToString(_quoteAtt); cls.Elimina = (isEliminare ? "S" : "N"); ListaQuote.Add(cls); cls = null; oldImmobile = itemSemPrec.colonnaImmobili; } } /* Aggiunge alla lista finale gli elementi presenti non presenti nel semestre precedente */ foreach (var itemNuovi in firstNotSecond) { Quote cls = null; foreach (var item in itemNuovi._listaDetailQuote) { cls = new Quote(); if (itemNuovi.colonnaImmobili != oldImmobile) { cls.idImmobileCatasto = itemNuovi.IdImmobileCatasto; cls.chiaveClientePB = Convert.ToString(itemNuovi.chiaveClientePB); cls.chiaveProdottiTerzi = Convert.ToString(itemNuovi.chiaveProdottoTerzi); cls.colonnaImmobili = itemNuovi.colonnaImmobili; cls.renditaCatastale = Convert.ToString(itemNuovi.renditaCatastale); cls.redditoAgrario = Convert.ToString(itemNuovi.redditoAgrario); cls.tipoImmobile = itemNuovi.TipoImmobile; cls.rendita = Convert.ToString((itemNuovi.rendita == null ? string.Empty : itemNuovi.rendita)); cls.descrizione = itemNuovi.colonnaImmobili; cls.comune = itemNuovi.comune; cls.valoreImmobileTotale = itemNuovi.valoreImmobileTotale; } cls.Tipologiastorico = item.TipologiaDirittoST; cls.QuotaStorico = Convert.ToString(item.QuoteDirittoST); cls.tipologiaAttuale = item.TipologiaDirittoATT; cls.quotaAttuale = Convert.ToString(item.QuoteDirittoATT); ListaQuote.Add(cls); cls = null; oldImmobile = itemNuovi.colonnaImmobili; } } /* Ciclo sulla lista totale per recuperare gli altri immobili */ //foreach (var itemDiff in listaTotale) //{ // int conta = ListaQuote.Where(f => f.idImmobileCatasto == itemDiff.IdImmobileCatasto).Count(); // if (conta == 0) // { // Quote cls = null; // foreach (var item in itemDiff._listaDetailQuote) // { // cls = new Quote(); // if (itemDiff.colonnaImmobili != oldImmobile) // { // cls.idImmobileCatasto = itemDiff.IdImmobileCatasto; // cls.chiaveClientePB = Convert.ToString(itemDiff.chiaveClientePB); // cls.chiaveProdottiTerzi = Convert.ToString(itemDiff.chiaveProdottoTerzi); // cls.colonnaImmobili = itemDiff.colonnaImmobili; // cls.renditaCatastale = Convert.ToString(itemDiff.renditaCatastale); // cls.redditoAgrario = Convert.ToString(itemDiff.redditoAgrario); // cls.tipoImmobile = itemDiff.TipoImmobile; // cls.rendita = Convert.ToString((itemDiff.rendita == null ? string.Empty : itemDiff.rendita)); // cls.descrizione = itemDiff.colonnaImmobili; // cls.comune = itemDiff.comune; // cls.valoreImmobileTotale = itemDiff.valoreImmobileTotale; // } // cls.Tipologiastorico = item.TipologiaDirittoST; // cls.QuotaStorico = Convert.ToString(item.QuoteDirittoST); // cls.tipologiaAttuale = item.TipologiaDirittoATT; // cls.quotaAttuale = Convert.ToString(item.QuoteDirittoATT); // ListaQuote.Add(cls); // cls = null; // oldImmobile = itemDiff.colonnaImmobili; // } // } //} ListaQuote.Where(f => f.rendita == null).ToList().ForEach(p => p.rendita = string.Empty); ListaQuote.RemoveAll(rem => rem.Elimina == "S"); ListaQuote.Where(f => f.Tipologiastorico == null).ToList().ForEach(p => p.Tipologiastorico = "Nessuna"); #region Ordinamento var newSort = (from row in ListaQuote group row by row.comune into grp select new { comune = grp.Key, valoreImmobileTotale = grp.Sum(x => x.valoreImmobileTotale), }); /* Dichiaro dei DataTable */ DataTable _dtFabbricati = new DataTable(); List _listaTotaleOridnata = new List(); foreach (var item in newSort) { var _listaFabbricati = ListaQuote.Where(f => f.comune == item.comune && f.tipoImmobile == "F").OrderByDescending(o => o.valoreImmobileTotale).Select(s => s).ToList(); if (_listaFabbricati.Count > 0) _listaTotaleOridnata.AddRange(_listaFabbricati); } foreach (var itemTerreni in newSort) { var _listaTerreni = ListaQuote.Where(f => f.comune == itemTerreni.comune && f.tipoImmobile == "T").Select(s => s).ToList(); if (_listaTerreni.Count > 0) _listaTotaleOridnata.AddRange(_listaTerreni); } #endregion //DataTable _dt = ToDataTable(ListaQuote.OrderBy(o=> o.tipoImmobile).ToList()); DataTable _dt = ToDataTable(_listaTotaleOridnata.ToList()); data.Tables.Add(_dt); #endregion } catch(Exception ex) { } return data; } private DataTable GetDatiQuoteStorici(string _ccpb) { List _listaFiltrataStorica = new List(); DataTable _dt = null; try { // Determino la data da utilizzare come filtro nella lista string dataFineSemestreAttaule = ConfigurationManager.AppSettings["DataFineTrimestreCorrente_Copertina"].ToString(); DateTime dataSemestrePrecedente = Convert.ToDateTime(dataFineSemestreAttaule).AddMonths(-6).AddMonths(1); string meseSemPrecedente = dataSemestrePrecedente.Month.ToString(); string annoSemPrecedente = dataSemestrePrecedente.Year.ToString(); string giornoSemPrecedente = "01"; //dataSemestrePrecedente.Day.ToString(); if (meseSemPrecedente.Length == 1) meseSemPrecedente = string.Concat("0", meseSemPrecedente); if (giornoSemPrecedente.Length == 1) giornoSemPrecedente = string.Concat("0", giornoSemPrecedente); string dataSemPrecedente = string.Concat(annoSemPrecedente, meseSemPrecedente, giornoSemPrecedente); string meseSemAtt = Convert.ToDateTime(dataFineSemestreAttaule).Month.ToString(); string giornoSemAtt = Convert.ToDateTime(dataFineSemestreAttaule).Day.ToString(); string annoSemAtt = Convert.ToDateTime(dataFineSemestreAttaule).Year.ToString(); if (meseSemAtt.Length == 1) meseSemAtt = string.Concat("0", meseSemAtt); if (giornoSemAtt.Length == 1) giornoSemAtt = string.Concat("0", giornoSemAtt); string dataSemAttuale = string.Concat(annoSemAtt, meseSemAtt, giornoSemAtt); #region Definizione dei parametri var parametri = new List { new Parametro { Direction = ParameterDirection.Input, DbType = DbType.Int64, ParameterName = "@CCPB", Value =_ccpb }, new Parametro { Direction = ParameterDirection.Input, DbType = DbType.Int64, ParameterName = "@dataSemPrecedente", Value =dataSemPrecedente }, //new Parametro //{ // Direction = ParameterDirection.Input, // DbType = DbType.Int64, // ParameterName = "@dataSemAttuale", // Value =dataSemAttuale //} }; #endregion string queryStatoAttuale = @"select pt.idImmobileCatasto,pt.chiaveClientePB,dett.chiaveProdottoTerzi,dett.descrizione as colonnaImmobili ,dett.renditaCatastale,dett.redditoAgrario,dett.tipoImmobile,Case when dett.tipoImmobile ='F' then dett.renditaCatastale when dett.tipoImmobile ='T' then dett.redditoAgrario end rendita ,dett.tipologiaDiritto as tipologiaAttuale,dett.quotaProprieta as quotaAttuale,dett.descrizione,dett.quotaProprieta ,dett.valoreImmobileTotale,dett.tipologia,dett.dtStimaOMI,dett.dtUltimaModifica,dett.comune from ConsulenzaUnica..PatrimonioTerzi pt inner join ConsulenzaUnica..DettImmobiliare dett on pt.chiaveProdottoTerzi = dett.chiaveProdottoTerzi where pt.chiaveClientePB = @CCPB and dett.tipoImmobile in ('F','T') and pt.dtfinevalidita > GETDATE() and convert(char(8),dett.dtStimaOMI,112) >= @dataSemPrecedente --and convert(char(8),dett.dtStimaOMI,112) <= @dataSemAttuale --and convert(char(8),pt.dtInizioValidita,112) >= @dataSemPrecedente --and convert(char(8),pt.dtInizioValidita,112) <= @dataSemAttuale order by dett.tipoImmobile,dett.descrizione"; var dsOriginal = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, queryStatoAttuale, parametri); if (dsOriginal.Rows.Count > 0) _dt = dsOriginal.AsEnumerable().CopyToDataTable(); return _dt; } catch (Exception ex) { throw new Exception(ex.Message); } } private List SetDetail(List _lista, string _Semestre) { try { // Ciclo sulla lista Master e per ogni CCPB e CTERZI // 1. Ordino per CCPB // 2. Faccio distinct // 3. Per ogni CCPB trovo il dettaglio _lista = _lista.OrderBy(o => o.chiaveClientePB).ToList(); //List _listaCCPB = _lista.Select(s => s.chiaveClientePB).Distinct().ToList(); foreach (var item in _lista) { if (_Semestre == "A") { #region Dati Attuali DataTable _dt = GetDetail(item.chiaveClientePB, item.chiaveProdottoTerzi); var listaDettaglio = _dt.AsEnumerable().ToList(); if (listaDettaglio.Count() > 0) { Int64 max = listaDettaglio.Max(m => m.Field("chiaveCointestatari")); foreach (var itemDett in listaDettaglio.Where(f => f.Field("chiaveCointestatari") == max)) { item._listaDetailQuote.Add(new DetailQuote() { TipologiaDirittoATT = itemDett.Field("tipologiaDiritto"), QuoteDirittoATT = itemDett.Field("quotaDiritto") }); } } #endregion } else { #region Storico Old //DataTable _dtStorico = GetStorico(item.chiaveClientePB, item.chiaveProdottoTerzi); //var listaStorico = _dtStorico.AsEnumerable().ToList(); //if (listaStorico.Count() > 0) //{ // Int64 maxStorico = listaStorico.Max(m => m.Field("chiaveCointestatari")); // int pos = 0; // foreach (var itemST in listaStorico.Where(f => f.Field("chiaveCointestatari") == maxStorico)) // { // if (pos <= item._listaDetailQuote.Count() - 1) // { // item._listaDetailQuote[pos].TipologiaDirittoST = itemST.Field("tipologiaDiritto"); // item._listaDetailQuote[pos].QuoteDirittoST = itemST.Field("quotaDiritto"); // item._listaDetailQuote[pos].AggiornatoAl = itemST.Field("dtImportazione").ToShortDateString(); // } // else // { // item._listaDetailQuote.Add(new DetailQuote() // { // TipologiaDirittoST = itemST.Field("tipologiaDiritto"), // QuoteDirittoST = itemST.Field("quotaDiritto"), // AggiornatoAl = itemST.Field("dtImportazione").ToShortDateString() // }); // } // pos += 1; // } //} #endregion #region Storico New //DataTable _dtST = GetDetail(item.chiaveClientePB, item.chiaveProdottoTerzi); DataTable _dtST = GetStorico(item.chiaveClientePB, item.chiaveProdottoTerzi); var listaDettaglioST = _dtST.AsEnumerable().ToList(); if (listaDettaglioST.Count() > 0) { Int64 max = listaDettaglioST.Max(m => m.Field("chiaveCointestatari")); //int pos = 0; foreach (var itemDett in listaDettaglioST.Where(f => f.Field("chiaveCointestatari") == max)) { item._listaDetailQuote.Add(new DetailQuote() { TipologiaDirittoST = itemDett.Field("TD_ST"), QuoteDirittoST = itemDett.Field("Q_ST") }); } } #endregion } } } catch (Exception ex) { //MessageBox.Show("Errore: " + ex.Message); } return _lista; } private DataTable GetDetail(Int64 _ccpb, Int64 _cpt) { DataTable _dt = new DataTable(); try { #region Definizione dei parametri var parametri = new List { new Parametro { Direction = ParameterDirection.Input, DbType = DbType.Int64, ParameterName = "@CCPB", Value =_ccpb }, new Parametro { Direction = ParameterDirection.Input, DbType = DbType.Int64, ParameterName = "CPT", Value =_cpt } }; #endregion string queryLogGenerale = @"Select coin.chiaveClientePB,coin.chiaveProdottoTerzi,coin.chiaveCointestatari,condett.tipologiaDiritto,condett.quotaDiritto from ConsulenzaUnica..cointestatari coin inner join ConsulenzaUnica..CointestatariDettaglioDiritto condett on coin.chiaveProdottoTerzi=condett.chiaveprodottoterzi and coin.chiaveCointestatari=condett.chiaveCointestatari where coin.chiaveClientePB = @CCPB and coin.chiaveClientePBProprietario = @CCPB and condett.chiaveprodottoterzi = @CPT"; var dsOriginal = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, queryLogGenerale, parametri); _dt = dsOriginal.AsEnumerable().CopyToDataTable(); //#region Dettaglio //DataSet ds = null; //String connString = ConfigurationManager.ConnectionStrings["SqlServerConsulenzaUnicaCONG"].ToString(); //using (SqlConnection conn = new SqlConnection(connString)) //{ // string queryLogGenerale = @"Select coin.chiaveClientePB,coin.chiaveProdottoTerzi,coin.chiaveCointestatari,condett.tipologiaDiritto,condett.quotaDiritto from ConsulenzaUnica..cointestatari coin inner join ConsulenzaUnica..CointestatariDettaglioDiritto condett on coin.chiaveProdottoTerzi=condett.chiaveprodottoterzi and coin.chiaveCointestatari=condett.chiaveCointestatari where coin.chiaveClientePB = @CCPB and coin.chiaveClientePBProprietario = @CCPB and condett.chiaveprodottoterzi = @CPT"; // SqlCommand cmd = new SqlCommand(queryLogGenerale, conn); // cmd.CommandType = CommandType.Text; // cmd.Parameters.Add("@CCPB", SqlDbType.BigInt); // cmd.Parameters["@CCPB"].Value = _ccpb; //6088; //6088; //1662180; // cmd.Parameters.Add("@CPT", SqlDbType.BigInt); // cmd.Parameters["@CPT"].Value = _cpt; // try // { // conn.Open(); // ds = new DataSet(); // var da = new SqlDataAdapter(cmd); // da.Fill(ds); // _dt = ds.Tables[0].AsEnumerable().CopyToDataTable();//.AsEnumerable().GroupBy(x => x.Field("idImmobileCatasto")).Select(x => x.First()).Where(x => x.Field("ordinamento") == 4).CopyToDataTable(); // } // catch (Exception ex) // { // Console.WriteLine(ex.Message); // } // finally // { // conn.Close(); // conn.Dispose(); // } //} //#endregion } catch (Exception ex) { //MessageBox.Show("Errore: " + ex.Message); } return _dt; } private DataTable GetStorico(Int64 _ccpb, Int64 _cpt) { DataTable _dt = new DataTable(); try { string DataRicCatastoPenSem = ConfigurationManager.AppSettings["DataRicCatastoUltimaSemestrale"].ToString(); string meseUltSemRicCata = Convert.ToDateTime(DataRicCatastoPenSem).Month.ToString(); string giornoUltSemRicCata = Convert.ToDateTime(DataRicCatastoPenSem).Day.ToString(); string annoUltSemRicCata = Convert.ToDateTime(DataRicCatastoPenSem).Year.ToString(); if (meseUltSemRicCata.Length == 1) meseUltSemRicCata = string.Concat("0", meseUltSemRicCata); if (giornoUltSemRicCata.Length == 1) giornoUltSemRicCata = string.Concat("0", giornoUltSemRicCata); string dataannoUltSemRicCata = string.Concat(annoUltSemRicCata, meseUltSemRicCata, giornoUltSemRicCata); #region Definizione dei parametri var parametri = new List { new Parametro { Direction = ParameterDirection.Input, DbType = DbType.Int64, ParameterName = "@CCPB", Value =_ccpb }, new Parametro { Direction = ParameterDirection.Input, DbType = DbType.Int64, ParameterName = "@CPT", Value =_cpt }, new Parametro { Direction = ParameterDirection.Input, DbType = DbType.String, ParameterName = "@dataannoUltSemRicCata", Value = dataannoUltSemRicCata }, }; #endregion var queryStorico = @"Select dettdir.chiaveClientePB, dettdir.chiaveprodottoterzi, dettdir.chiaveCointestatari, dettimm.tipologiaDiritto as TD_Att, dettimm.quotaProprieta as Q_ATT, dettimm.dtStimaOMI, dettdir.tipologiaDiritto as TD_ST, dettdir.quotaDiritto as Q_ST, dettdir.dtImportazione from ConsulenzaUnica..PatrimonioTerzi pt inner join ConsulenzaUnica..DettImmobiliare dettimm ON pt.chiaveProdottoTerzi = dettimm.chiaveProdottoTerzi left join ConsulenzaUnica..DettImmobiliareStoricoVariazioni dettdir on pt.chiaveProdottoTerzi = dettdir.chiaveProdottoTerzi where dettdir.chiaveClientePB = @CCPB and dettdir.chiaveprodottoterzi = @CPT and chiaveclientepbProprietario = @CCPB and dtfinevalidita > getdate() and dettdir.dtImportazione > @dataannoUltSemRicCata"; var dsOriginal = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, queryStorico, parametri); _dt = dsOriginal.AsEnumerable().CopyToDataTable(); //#region Dettaglio storico //DataSet ds = null; //String connString = ConfigurationManager.ConnectionStrings["SqlServerConsulenzaUnicaCONG"].ToString(); //using (SqlConnection conn = new SqlConnection(connString)) //{ // var queryStorico = @"Select dettdir.chiaveClientePB, // dettdir.chiaveprodottoterzi, // dettdir.chiaveCointestatari, // dettimm.tipologiaDiritto as TD_Att, // dettimm.quotaProprieta as Q_ATT, // dettimm.dtStimaOMI, // dettdir.tipologiaDiritto as TD_ST, // dettdir.quotaDiritto as Q_ST, // dettdir.dtImportazione // from ConsulenzaUnica..PatrimonioTerzi pt // inner join ConsulenzaUnica..DettImmobiliare dettimm ON pt.chiaveProdottoTerzi = dettimm.chiaveProdottoTerzi // left join ConsulenzaUnica..DettImmobiliareStoricoVariazioni dettdir // on pt.chiaveProdottoTerzi = dettdir.chiaveProdottoTerzi // where dettdir.chiaveClientePB = @CCPB // and dettdir.chiaveprodottoterzi = @CPT // and chiaveclientepbProprietario = @CCPB // and dtfinevalidita > getdate()"; // SqlCommand cmd = new SqlCommand(queryStorico, conn); // cmd.CommandType = CommandType.Text; // cmd.Parameters.Add("@CCPB", SqlDbType.BigInt); // cmd.Parameters["@CCPB"].Value = _ccpb; //6088; //6088; //1662180; // cmd.Parameters.Add("@CPT", SqlDbType.BigInt); // cmd.Parameters["@CPT"].Value = _cpt; // //cmd.Parameters.Add("@meseSemPrecedente", SqlDbType.VarChar); // //cmd.Parameters["@meseSemPrecedente"].Value = meseSemPrecedente; // //cmd.Parameters.Add("@annoSemPrecedente", SqlDbType.VarChar); // //cmd.Parameters["@annoSemPrecedente"].Value = annoSemPrecedente; // //cmd.Parameters.Add("@data", SqlDbType.VarChar); // //cmd.Parameters["@data"].Value = dataSemestrePrecedente; // try // { // conn.Open(); // ds = new DataSet(); // var da = new SqlDataAdapter(cmd); // da.Fill(ds); // _dt = ds.Tables[0].AsEnumerable().CopyToDataTable();//.AsEnumerable().GroupBy(x => x.Field("idImmobileCatasto")).Select(x => x.First()).Where(x => x.Field("ordinamento") == 4).CopyToDataTable(); // } // catch (Exception ex) // { // Console.WriteLine(ex.Message); // } // finally // { // conn.Close(); // conn.Dispose(); // } //} //#endregion } catch (Exception ex) { //MessageBox.Show("Errore: " + ex.Message); } return _dt; } private bool VerificaVariazioni(List listaAtt, MasterQuote _semPrec) { bool isEliminare = false; bool isQuoteUguali = false; bool isDirittiUguali = false; Int64 cpt = _semPrec.chiaveProdottoTerzi; // filtro la lista Att per quella cpt MasterQuote _semAtt = listaAtt.Where(f => f.chiaveProdottoTerzi == cpt).Select(s => s).FirstOrDefault(); //foreach (var itemQuoteST in _semPrec._listaDetailQuote) //{ // string _dirittiAtt = _semAtt._listaDetailQuote.Where(f => f.TipologiaDirittoATT == itemQuoteST.TipologiaDirittoST).Select(s => s.TipologiaDirittoATT).FirstOrDefault(); // decimal _quoteAtt = _semAtt._listaDetailQuote.Where(f => f.QuoteDirittoATT == itemQuoteST.QuoteDirittoST).Select(s => s.QuoteDirittoATT).FirstOrDefault(); // if (itemQuoteST.TipologiaDirittoST == _dirittiAtt) // isDirittiUguali = true; // else // isDirittiUguali = false; // if (itemQuoteST.QuoteDirittoST == _quoteAtt) // isQuoteUguali = true; // else // isQuoteUguali = false; //} //if (isQuoteUguali && isDirittiUguali) isEliminare = true; if (VerificaStoricoVariazione(_semPrec)) isEliminare = false; else { if (isQuoteUguali && isDirittiUguali) isEliminare = true; } return isEliminare; } private bool VerificaStoricoVariazione(MasterQuote _semPrec) { bool isVariazioni = false; // Verifico variazioni nelle quote DataTable _dt = new DataTable(); try { #region Storico Variazioni // Determino la data da utilizzare come filtro nella lista string dataFineSemestreAttaule = ConfigurationManager.AppSettings["DataFineTrimestreCorrente_Copertina"].ToString(); DateTime dataSemestrePrecedente = Convert.ToDateTime(dataFineSemestreAttaule).AddMonths(-6).AddMonths(1); string meseSemPrecedente = dataSemestrePrecedente.Month.ToString(); string annoSemPrecedente = dataSemestrePrecedente.Year.ToString(); string giornoSemPrecedente = "01"; //dataSemestrePrecedente.Day.ToString(); if (meseSemPrecedente.Length == 1) meseSemPrecedente = string.Concat("0", meseSemPrecedente); if (giornoSemPrecedente.Length == 1) giornoSemPrecedente = string.Concat("0", giornoSemPrecedente); string dataSemPrecedente = string.Concat(annoSemPrecedente, meseSemPrecedente, giornoSemPrecedente); string meseSemAtt = Convert.ToDateTime(dataFineSemestreAttaule).Month.ToString(); string giornoSemAtt = Convert.ToDateTime(dataFineSemestreAttaule).Day.ToString(); string annoSemAtt = Convert.ToDateTime(dataFineSemestreAttaule).Year.ToString(); if (meseSemAtt.Length == 1) meseSemAtt = string.Concat("0", meseSemAtt); if (giornoSemAtt.Length == 1) giornoSemAtt = string.Concat("0", giornoSemAtt); string dataSemAttuale = string.Concat(annoSemAtt, meseSemAtt, giornoSemAtt); #region Definizione dei parametri var parametri = new List { new Parametro { Direction = ParameterDirection.Input, DbType = DbType.Int64, ParameterName = "@CCPB", Value =_semPrec.chiaveClientePB }, new Parametro { Direction = ParameterDirection.Input, DbType = DbType.Int64, ParameterName = "@CPT", Value =_semPrec.chiaveProdottoTerzi }, new Parametro { Direction = ParameterDirection.Input, DbType = DbType.String, ParameterName = "@dataSemPrecedente", Value =dataSemPrecedente }, new Parametro { Direction = ParameterDirection.Input, DbType = DbType.String, ParameterName = "@dataSemAttuale", Value =dataSemAttuale } }; #endregion string queryStoricoVariazioni = @"Select * from ConsulenzaUnica..DettImmobiliareStoricoVariazioni where chiaveClientePB = @CCPB and chiaveclientepbProprietario = @CCPB and chiaveprodottoterzi = @CPT and convert(char(8), dtimportazione, 112) >= @dataSemPrecedente and convert(char(8), dtimportazione, 112) <= @dataSemAttuale"; var dsOriginal = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, queryStoricoVariazioni, parametri); _dt = dsOriginal.AsEnumerable().CopyToDataTable(); if (_dt.Rows.Count > 0) isVariazioni = true; //DataSet ds = null; //String connString = ConfigurationManager.ConnectionStrings["SqlServerConsulenzaUnicaCONG"].ToString(); //using (SqlConnection conn = new SqlConnection(connString)) //{ // string queryStoricoVariazioni = @"Select * from ConsulenzaUnica..DettImmobiliareStoricoVariazioni // where chiaveClientePB = @CCPB // and chiaveclientepbProprietario = @CCPB // and chiaveprodottoterzi = @CPT // and convert(char(8), dtimportazione, 112) >= @dataSemPrecedente // and convert(char(8), dtimportazione, 112) <= @dataSemAttuale"; // SqlCommand cmd = new SqlCommand(queryStoricoVariazioni, conn); // cmd.CommandType = CommandType.Text; // cmd.Parameters.Add("@CCPB", SqlDbType.BigInt); // cmd.Parameters["@CCPB"].Value = _semPrec.chiaveClientePB; //6088; //6088; //1662180; // cmd.Parameters.Add("@CPT", SqlDbType.BigInt); // cmd.Parameters["@CPT"].Value = _semPrec.chiaveProdottoTerzi; // cmd.Parameters.Add("@dataSemPrecedente", SqlDbType.NVarChar); // cmd.Parameters["@dataSemPrecedente"].Value = dataSemPrecedente; // cmd.Parameters.Add("@dataSemAttuale", SqlDbType.NVarChar); // cmd.Parameters["@dataSemAttuale"].Value = dataSemAttuale; // try // { // conn.Open(); // ds = new DataSet(); // var da = new SqlDataAdapter(cmd); // da.Fill(ds); // _dt = ds.Tables[0].AsEnumerable().CopyToDataTable();//.AsEnumerable().GroupBy(x => x.Field("idImmobileCatasto")).Select(x => x.First()).Where(x => x.Field("ordinamento") == 4).CopyToDataTable(); // if (_dt.Rows.Count > 0) // isVariazioni = true; // } // catch (Exception ex) // { // Console.WriteLine(ex.Message); // } // finally // { // conn.Close(); // conn.Dispose(); // } //} #endregion } catch (Exception ex) { //MessageBox.Show("Errore: " + ex.Message); } return isVariazioni; } //private DataSet GetQuoteVariate(DataSet _ds) //{ // DataSet data = new DataSet(); // List ListaQuote = new List(); // string oldImmobile = string.Empty; // try // { // List _listaMaster = ConvertTo(_ds.Tables[0]); // var listaTotale = SetDetail(_listaMaster); // foreach (var item in listaTotale) // { // Quote cls = null; // foreach (var itemST in item._listaDetailQuote) // { // cls = new Quote(); // bool isEliminare = VerificaNessunaVariazione(item._listaDetailQuote); // if (item.colonnaImmobili != oldImmobile) // { // cls.idImmobileCatasto = item.IdImmobileCatasto; // cls.chiaveClientePB = Convert.ToString(item.chiaveClientePB); // cls.chiaveProdottiTerzi = Convert.ToString(item.chiaveProdottoTerzi); // cls.colonnaImmobili = item.colonnaImmobili; // cls.renditaCatastale = Convert.ToString(item.renditaCatastale); // cls.redditoAgrario = Convert.ToString(item.redditoAgrario); // cls.tipoImmobile = item.TipoImmobile; // cls.rendita = Convert.ToString((item.rendita != null ? item.rendita : "0")); // cls.descrizione = item.colonnaImmobili; // } // cls.Tipologiastorico = itemST.TipologiaDirittoST; // cls.QuotaStorico = Convert.ToString(itemST.QuoteDirittoST); // cls.tipologiaAttuale = itemST.TipologiaDirittoATT; // cls.quotaAttuale = Convert.ToString(itemST.QuoteDirittoATT); // cls.Elimina = (isEliminare ? "S" : "N"); // ListaQuote.Add(cls); // cls = null; // oldImmobile = item.colonnaImmobili; // } // } // } // catch(Exception ex) // { // } // ListaQuote.Where(f => f.rendita == null).ToList().ForEach(p => p.rendita = string.Empty); // ListaQuote.RemoveAll(rem => rem.Elimina == "S"); // //ListaQuote.RemoveAll(rem => rem.tipologiaAttuale == rem.Tipologiastorico && rem.quotaAttuale == rem.QuotaStorico); // ListaQuote.Where(f => f.Tipologiastorico == null).ToList().ForEach(p => p.Tipologiastorico = "Nessuna"); // DataTable _dt = ToDataTable(ListaQuote); // data.Tables.Add(_dt); // return data; //} //private List SetDetail(List _lista) //{ // try // { // // Ciclo sulla lista Master e per ogni CCPB e CTERZI // // 1. Ordino per CCPB // // 2. Faccio distinct // // 3. Per ogni CCPB trovo il dettaglio // _lista = _lista.OrderBy(o => o.chiaveClientePB).ToList(); // //List _listaCCPB = _lista.Select(s => s.chiaveClientePB).Distinct().ToList(); // foreach (var item in _lista) // { // DataTable _dt = GetDetail(item.chiaveClientePB, item.chiaveProdottoTerzi); // var listaDettaglio = _dt.AsEnumerable().ToList(); // if (listaDettaglio.Count() > 0) // { // Int64 max = listaDettaglio.Max(m => m.Field("chiaveCointestatari")); // foreach (var itemDett in listaDettaglio.Where(f => f.Field("chiaveCointestatari") == max)) // { // item._listaDetailQuote.Add(new DetailQuote() // { // TipologiaDirittoATT = itemDett.Field("tipologiaDiritto"), // QuoteDirittoATT = itemDett.Field("quotaDiritto") // }); // } // } // #region Storico // DataTable _dtStorico = GetStorico(item.chiaveClientePB, item.chiaveProdottoTerzi); // var listaStorico = _dtStorico.AsEnumerable().ToList(); // if (listaStorico.Count() > 0) // { // Int64 maxStorico = listaStorico.Max(m => m.Field("chiaveCointestatari")); // int pos = 0; // foreach (var itemST in listaStorico.Where(f => f.Field("chiaveCointestatari") == maxStorico)) // { // if (pos <= item._listaDetailQuote.Count() - 1) // { // item._listaDetailQuote[pos].TipologiaDirittoST = itemST.Field("tipologiaDiritto"); // item._listaDetailQuote[pos].QuoteDirittoST = itemST.Field("quotaDiritto"); // } // else // { // item._listaDetailQuote.Add(new DetailQuote() // { // TipologiaDirittoST = itemST.Field("tipologiaDiritto"), // QuoteDirittoST = itemST.Field("quotaDiritto") // }); // } // pos += 1; // } // } // #endregion // } // } // catch (Exception ex) // { // //MessageBox.Show("Errore: " + ex.Message); // } // return _lista; //} //private DataTable GetDetail(Int64 _ccpb, Int64 _cpt) //{ // DataTable _dt = new DataTable(); // try // { // #region Definizione dei parametri // var parametri = new List // { // new Parametro // { // Direction = ParameterDirection.Input, // DbType = DbType.Int64, // ParameterName = "@CCPB", // Value =_ccpb // }, // new Parametro // { // Direction = ParameterDirection.Input, // DbType = DbType.Int64, // ParameterName = "CPT", // Value =_cpt // } // }; // #endregion // string queryLogGenerale = @"Select coin.chiaveClientePB,coin.chiaveProdottoTerzi,coin.chiaveCointestatari,condett.tipologiaDiritto,condett.quotaDiritto from ConsulenzaUnica..cointestatari coin inner join ConsulenzaUnica..CointestatariDettaglioDiritto condett on coin.chiaveProdottoTerzi=condett.chiaveprodottoterzi and coin.chiaveCointestatari=condett.chiaveCointestatari where coin.chiaveClientePB = @CCPB and coin.chiaveClientePBProprietario = @CCPB and condett.chiaveprodottoterzi = @CPT"; // var dsOriginal = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, queryLogGenerale, parametri); // _dt = dsOriginal.AsEnumerable().CopyToDataTable(); // //#region Dettaglio // //DataSet ds = null; // //String connString = ConfigurationManager.ConnectionStrings["SqlServerConsulenzaUnicaCONG"].ToString(); // //using (SqlConnection conn = new SqlConnection(connString)) // //{ // // string queryLogGenerale = @"Select coin.chiaveClientePB,coin.chiaveProdottoTerzi,coin.chiaveCointestatari,condett.tipologiaDiritto,condett.quotaDiritto from ConsulenzaUnica..cointestatari coin inner join ConsulenzaUnica..CointestatariDettaglioDiritto condett on coin.chiaveProdottoTerzi=condett.chiaveprodottoterzi and coin.chiaveCointestatari=condett.chiaveCointestatari where coin.chiaveClientePB = @CCPB and coin.chiaveClientePBProprietario = @CCPB and condett.chiaveprodottoterzi = @CPT"; // // SqlCommand cmd = new SqlCommand(queryLogGenerale, conn); // // cmd.CommandType = CommandType.Text; // // cmd.Parameters.Add("@CCPB", SqlDbType.BigInt); // // cmd.Parameters["@CCPB"].Value = _ccpb; //6088; //6088; //1662180; // // cmd.Parameters.Add("@CPT", SqlDbType.BigInt); // // cmd.Parameters["@CPT"].Value = _cpt; // // try // // { // // conn.Open(); // // ds = new DataSet(); // // var da = new SqlDataAdapter(cmd); // // da.Fill(ds); // // _dt = ds.Tables[0].AsEnumerable().CopyToDataTable();//.AsEnumerable().GroupBy(x => x.Field("idImmobileCatasto")).Select(x => x.First()).Where(x => x.Field("ordinamento") == 4).CopyToDataTable(); // // } // // catch (Exception ex) // // { // // Console.WriteLine(ex.Message); // // } // // finally // // { // // conn.Close(); // // conn.Dispose(); // // } // //} // //#endregion // } // catch (Exception ex) // { // //MessageBox.Show("Errore: " + ex.Message); // } // return _dt; //} //private DataTable GetStorico(Int64 _ccpb, Int64 _cpt) //{ // DataTable _dt = new DataTable(); // try // { // string dataFineSemestreAttaule = ConfigurationManager.AppSettings["DataFineTrimestreCorrente_Copertina"].ToString(); // DateTime dataSemestrePrecedente = Convert.ToDateTime(dataFineSemestreAttaule).AddMonths(-6); // string meseSemPrecedente = ((dataSemestrePrecedente.Month) + 1).ToString(); // string annoSemPrecedente = dataSemestrePrecedente.Year.ToString(); // #region Definizione dei parametri // var parametri = new List // { // new Parametro // { // Direction = ParameterDirection.Input, // DbType = DbType.Int64, // ParameterName = "@CCPB", // Value =_ccpb // }, // new Parametro // { // Direction = ParameterDirection.Input, // DbType = DbType.Int64, // ParameterName = "@CPT", // Value =_cpt // }, // new Parametro // { // Direction = ParameterDirection.Input, // DbType = DbType.String, // ParameterName = "@meseSemPrecedente", // Value = meseSemPrecedente // }, // new Parametro // { // Direction = ParameterDirection.Input, // DbType = DbType.String, // ParameterName = "@annoSemPrecedente", // Value = annoSemPrecedente // } // }; // #endregion // //string queryLogGenerale = @"Select dettImmSTDD.tipologiaDiritto,dettImmSTDD.quotaDiritto,dettImmST.chiaveCointestatari from (Select * from ConsulenzaUnica..DettImmobiliareStoricoVariazioni where convert(char(8),dtimportazione,112) >= '20200331') as dettImmST // // inner join (Select distinct chiaveprodottoterzi, tipologiaDiritto,quotaDiritto from ConsulenzaUnica..DettImmobiliareStoricoVariazioniDettaglioDiritto) as dettImmSTDD // // on dettImmST.chiaveprodottoterzi = dettImmSTDD.chiaveprodottoterzi // // where dettImmST.chiaveClientePB = @CCPB // // and dettImmST.chiaveprodottoterzi = @CPT"; // //string queryLogGenerale = @"Select condett.tipologiaDiritto,condett.quotaDiritto,condett.chiaveCointestatari from ConsulenzaUnica..cointestatari coin // // inner join ConsulenzaUnica..CointestatariDettaglioDiritto_1706 condett on coin.chiaveProdottoTerzi=condett.chiaveprodottoterzi and coin.chiaveCointestatari=condett.chiaveCointestatari // // where coin.chiaveClientePB = @CCPB // // and condett.chiaveprodottoterzi = @CPT"; // string queryLogGenerale = @"select DISTINCT // CASE WHEN isnull(stor.tipologiaDiritto, '') = '' THEN dettimmST.tipologiaDiritto ELSE stor.tipologiaDiritto END AS tipologiaDiritto, // CASE WHEN isnull(stor.quotaDiritto, 0) = 0 THEN dettimmST.quotaDiritto ELSE stor.quotaDiritto END AS quotaDiritto, // --CAST(pt.chiaveClientePB AS bigint) AS chiaveClientePB, // dettimmST.chiaveCointestatari // --pt.chiaveProdottoTerzi, // --dettimmST.dtImportazione // from ConsulenzaUnica..PatrimonioTerzi pt // inner join ConsulenzaUnica..DettImmobiliare dettimm on pt.chiaveProdottoTerzi = dettimm.chiaveProdottoTerzi AND pt.dtfinevalidita > GETDATE() // inner join ConsulenzaUnica..DettImmobiliareStoricoVariazioni dettimmST on pt.chiaveClientePB = dettimmST.chiaveClientePB and pt.chiaveProdottoTerzi=dettimmST.chiaveprodottoterzi // inner join dbo.DettImmobiliareStoricoVariazioniDettaglioDiritto AS stor ON stor.chiaveCointestatari = dettimmST.chiaveCointestatari // where dettimmST.chiaveClientePB=@CCPB // and dettimmST.chiaveProdottoTerzi = @CPT // and dettImmST.chiaveclientepbProprietario = @CCPB // and MONTH(dettimmST.dtimportazione) = @meseSemPrecedente // and Year(dettimmST.dtimportazione) = @annoSemPrecedente"; // //and convert(char(8),dettimmST.dtimportazione,112) >= '20200331'"; // var dsOriginal = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, queryLogGenerale, parametri); // _dt = dsOriginal.AsEnumerable().CopyToDataTable(); // //#region Dettaglio // //DataSet ds = null; // //String connString = ConfigurationManager.ConnectionStrings["SqlServerConsulenzaUnicaCONG"].ToString(); // //using (SqlConnection conn = new SqlConnection(connString)) // //{ // // string queryLogGenerale = @"Select dettImmSTDD.tipologiaDiritto,dettImmSTDD.quotaDiritto,dettImmST.chiaveCointestatari from (Select * from ConsulenzaUnica..DettImmobiliareStoricoVariazioni where convert(char(8),dtimportazione,112) >= '20200331') as dettImmST // // inner join (Select distinct chiaveprodottoterzi, tipologiaDiritto,quotaDiritto from ConsulenzaUnica..DettImmobiliareStoricoVariazioniDettaglioDiritto) as dettImmSTDD // // on dettImmST.chiaveprodottoterzi = dettImmSTDD.chiaveprodottoterzi // // where dettImmST.chiaveClientePB = @CCPB // // and dettImmST.chiaveprodottoterzi = @CPT"; // // //and dettImmST.chiaveCointestatari = @CC"; // // SqlCommand cmd = new SqlCommand(queryLogGenerale, conn); // // cmd.CommandType = CommandType.Text; // // cmd.Parameters.Add("@CCPB", SqlDbType.BigInt); // // cmd.Parameters["@CCPB"].Value = _ccpb; //6088; //6088; //1662180; // // cmd.Parameters.Add("@CPT", SqlDbType.BigInt); // // cmd.Parameters["@CPT"].Value = _cpt; // // //cmd.Parameters.Add("@CC", SqlDbType.BigInt); // // //cmd.Parameters["@CC"].Value = _cc; // // try // // { // // conn.Open(); // // ds = new DataSet(); // // var da = new SqlDataAdapter(cmd); // // da.Fill(ds); // // _dt = ds.Tables[0].AsEnumerable().CopyToDataTable();//.AsEnumerable().GroupBy(x => x.Field("idImmobileCatasto")).Select(x => x.First()).Where(x => x.Field("ordinamento") == 4).CopyToDataTable(); // // } // // catch (Exception ex) // // { // // Console.WriteLine(ex.Message); // // } // // finally // // { // // conn.Close(); // // conn.Dispose(); // // } // //} // //#endregion // } // catch (Exception ex) // { // //MessageBox.Show("Errore: " + ex.Message); // } // return _dt; //} //private bool VerificaNessunaVariazione(List quote) //{ // bool isEliminare = false; // bool isQuoteUguali = false; // bool isDirittiUguali = false; // // Verifico variazini nelle quote // foreach (var item in quote) // { // if (item.QuoteDirittoST == item.QuoteDirittoATT) // isQuoteUguali = true; // else // isQuoteUguali = false; // if (item.TipologiaDirittoST == item.TipologiaDirittoATT) // isDirittiUguali = true; // else // isDirittiUguali = false; // } // if (isQuoteUguali && isDirittiUguali) isEliminare = true; // return isEliminare; //} #region "getobject filled object with property reconized" public List ConvertTo(DataTable datatable) where T : new() { List Temp = new List(); try { List columnsNames = new List(); foreach (DataColumn DataColumn in datatable.Columns) columnsNames.Add(DataColumn.ColumnName); Temp = datatable.AsEnumerable().ToList().ConvertAll(row => getObject(row, columnsNames)); return Temp; } catch { return Temp; } } public T getObject(DataRow row, List columnsName) where T : new() { T obj = new T(); try { string columnname = ""; string value = ""; PropertyInfo[] Properties; Properties = typeof(T).GetProperties(); foreach (PropertyInfo objProperty in Properties) { columnname = columnsName.Find(name => name.ToLower() == objProperty.Name.ToLower()); if (!string.IsNullOrEmpty(columnname)) { value = row[columnname].ToString(); if (!string.IsNullOrEmpty(value)) { if (Nullable.GetUnderlyingType(objProperty.PropertyType) != null) { value = row[columnname].ToString().Replace("$", "").Replace(",", ""); objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(Nullable.GetUnderlyingType(objProperty.PropertyType).ToString())), null); } else { value = row[columnname].ToString().Replace("%", ""); objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(objProperty.PropertyType.ToString())), null); } } } } return obj; } catch { return obj; } } private DataTable ToDataTable(IList data) { PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T)); DataTable table = new DataTable(); for (int i = 0; i < props.Count; i++) { PropertyDescriptor prop = props[i]; table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType); } object[] values = new object[props.Count]; foreach (T item in data) { for (int i = 0; i < values.Length; i++) values[i] = props[i].GetValue(item) ?? DBNull.Value; table.Rows.Add(values); } return table; } #endregion #endregion } public class MasterQuote { public MasterQuote() { _listaDetailQuote = new List(); } public int Id { get; set; } public string IdImmobileCatasto { get; set; } public Int64 chiaveClientePB { get; set; } public Int64 chiaveProdottoTerzi { get; set; } public string colonnaImmobili { get; set; } public decimal renditaCatastale { get; set; } public decimal redditoAgrario { get; set; } public string TipoImmobile { get; set; } public string rendita { get; set; } public string dtStimaOMI { get; set; } public string comune { get; set; } public decimal valoreImmobileTotale { get; set; } public List _listaDetailQuote { get; set; } } public class DetailQuote { public int Id { get; set; } public string TipologiaDirittoATT { get; set; } public decimal QuoteDirittoATT { get; set; } public string TipologiaDirittoST { get; set; } public decimal QuoteDirittoST { get; set; } } public class Quote { public string idImmobileCatasto { get; set; } public string chiaveClientePB { get; set; } public string chiaveProdottiTerzi { get; set; } public string colonnaImmobili { get; set; } public string renditaCatastale { get; set; } public string redditoAgrario { get; set; } public string tipoImmobile { get; set; } public string rendita { get; set; } public string tipologiaAttuale { get; set; } public string quotaAttuale { get; set; } public string descrizione { get; set; } public string quotaProprieta { get; set; } public decimal valoreImmobileTotale { get; set; } public string Tipologiastorico { get; set; } public string QuotaStorico { get; set; } public string Elimina { get; set; } public string comune { get; set; } } }