private void inizializza() { Inizializza(_impostazioneReportDTO, null); if (_reportDataSource.Count > 0) { _detailBand.MultiColumn.Mode = MultiColumnMode.UseColumnCount; _detailBand.MultiColumn.ColumnCount = _reportDataSource.Count; _detailBand.MultiColumn.Layout = ColumnLayout.DownThenAcross; } var location = 0.01f; var columnBreak = true; var index = 0; var totaleRicavi = _reportDataSource[0].Sum(item => item.Importo); var totaleCosti = _reportDataSource[1].Sum(item => item.Importo); var utileEsercizio = 0m; var perditaEsercizio = 0m; if (totaleCosti > totaleRicavi) perditaEsercizio = totaleCosti - totaleRicavi; else utileEsercizio = totaleRicavi - totaleCosti; foreach (var columnDataSource in _reportDataSource) { index++; if (index == _reportDataSource.Count) columnBreak = false; var caption = string.Empty; ReportRiepilogoContoEconomicoDTO reportRiepilogoContoEconomicoDTO = null; if (index == 1) { if(perditaEsercizio > 0) reportRiepilogoContoEconomicoDTO = new ReportRiepilogoContoEconomicoDTO { Importo = perditaEsercizio, Descrizione = "Perdita di Gestione", Tipo = TipoRiepilogoEconomico.Undefined}; caption = "Ricavi"; } else if (index > 1) { if (utileEsercizio > 0) reportRiepilogoContoEconomicoDTO = new ReportRiepilogoContoEconomicoDTO { Importo = utileEsercizio, Descrizione = "Utile di Gestione", Tipo = TipoRiepilogoEconomico.Undefined }; caption = "Costi"; } location = addSubReport(columnDataSource, reportRiepilogoContoEconomicoDTO, caption, location, columnBreak); } }
private float addSubReport(IList<ReportRiepilogoContoEconomicoDTO> dataSource, ReportRiepilogoContoEconomicoDTO risultatoEsercizio, string caption, float location, bool columnBreak) { var reportDare = new RiepilogoContoEconomico(dataSource, risultatoEsercizio, _condominio, _esercizio, _dataIniziale, _dataFinale, _impostazioneReportDTO, caption, true, _reportKey); var subreport = new XRSubreport { ReportSource = reportDare.GetReport(), LocationF = new PointF(0, location + .01f) }; _detailBand.Controls.Add(subreport); location += reportDare.GetTotalHeight(); if (columnBreak) { location = location + .01f; var pageBreak = new XRPageBreak(); _detailBand.Controls.Add(pageBreak); pageBreak.LocationF = new PointF(0, location); } return location; }
public IList<ReportRiepilogoContoEconomicoDTO> GetRiepilogoContoEconomico(int idEsercizio, DateTime dataIniziale, DateTime dataFinale) { try { var result = new List<ReportRiepilogoContoEconomicoDTO>(); var esercizio = _daoFactory.GetEsercizioDao().GetById(idEsercizio, false); // ------------------------------------------------------------------- // Risultato di esercizio // ------------------------------------------------------------------- var movimentiEconomici = _daoFactory.GetMovimentoContabileDao().GetByQuery("FROM MovimentoContabile MOV LEFT JOIN FETCH MOV.Testata TES LEFT JOIN FETCH MOV.ContoRiferimento CON WHERE MOV.Causale.Codice <> 'OC' AND MOV.Causale.Codice <> 'C1' AND MOV.Causale.Codice <> 'C2' AND MOV.Causale.Codice <> 'A2' AND TES.EsercizioRiferimento.CondominioRiferimento = :condominio AND TES.DataRegistrazione >= :dataRegistrazioneIniziale AND TES.DataRegistrazione <= :dataRegistrazioneFinale AND CON.PresenteBilancio = 1 AND CON.Tipo = :tipo", new QueryParam("condominio", esercizio.CondominioRiferimento.ID), new QueryParam("dataRegistrazioneIniziale", dataIniziale), new QueryParam("dataRegistrazioneFinale", dataFinale), new QueryParam("tipo", Conversione.ToHQLParameter(TipoContoEconomicoEnum.Economico))).Cast<IRipartizioneSpesa>().ToList(); var risultatoEconomicoCosto = movimentiEconomici.Sum(item => item.Importo.GetValueOrDefault()); // ------------------------------------------------------------------- // Debiti v/condomini (Quanto hanno effettivamente versato) // ------------------------------------------------------------------- var contiCondomini = _daoFactory.GetContoDao().GetAllByCodice(esercizio.CondominioRiferimento.ID, _pianoContiService.GetCodiceContoVersamentiCondomini()); var idContiCondomini = new List<int>(); idContiCondomini.AddRange(contiCondomini.Select(conto => conto.ID)); var movimentiCondomini = _movimentoContabileService.GetMovimentiByContiData(esercizio.CondominioRiferimento.ID, dataIniziale, dataFinale, idContiCondomini).Where(item => item.Causale.Codice != "AC" && item.Causale.Codice != "OC" && item.Causale.Codice != "C1" && item.Causale.Codice != "C2" && item.Causale.Codice != "A2"); var importoVersamentiCondomini = movimentiCondomini.Sum(item => item.GetImportoConSegno()); // --------------------------------------------- // Saldo iniziale // --------------------------------------------- var importoSaldoIniziale = _saldiCondominiService.GetSaldiSoggetti(esercizio.CondominioRiferimento.ID, null, null, TipoAccorpamentoRateEnum.Nessuno).Sum(item => item.Importo); var itemSaldoIniziale = new ReportRiepilogoContoEconomicoDTO { Importo = importoSaldoIniziale, Tipo = TipoRiepilogoEconomico.SaldoIniziale, Descrizione = TipoRiepilogoEconomico.SpeseGestione.Description(), Segno = importoSaldoIniziale > 0 ? "A" : "D" }; var importoPreventivato = 0m; var bilancioPreventivo = _bilancioService.GetPreventivoCorrente(idEsercizio); if(bilancioPreventivo != null) importoPreventivato = bilancioPreventivo.Conti.Sum(item => item.Importo.GetValueOrDefault()) + bilancioPreventivo.Riparto.Sum(item => item.Importo.GetValueOrDefault()); // --------------------------------------------- // Costi // --------------------------------------------- var itemSpeseGestione = new ReportRiepilogoContoEconomicoDTO { Importo = risultatoEconomicoCosto, Tipo = TipoRiepilogoEconomico.SpeseGestione, Descrizione = $"{TipoRiepilogoEconomico.SpeseGestione.Description()} (importo preventivato: {importoPreventivato:C})", Segno = "A" }; // --------------------------------------------- // Ricavi // --------------------------------------------- var itemVersamentiCondomini = new ReportRiepilogoContoEconomicoDTO { Importo = importoVersamentiCondomini.GetValueOrDefault(), Tipo = TipoRiepilogoEconomico.VersamentiCondomini, Descrizione = TipoRiepilogoEconomico.VersamentiCondomini.Description(), Segno = "D" }; result.Add(itemSaldoIniziale); result.Add(itemVersamentiCondomini); result.Add(itemSpeseGestione); return result; } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato nella redazione del riepilogo del conto economico - {0} - esercizio:{1} - dataIniziale:{2:d} - dataRiferimento:{3:d}", ex, Utility.GetMethodDescription(), idEsercizio, dataIniziale, dataFinale); throw; } }